#python #function #integer
#питон #функция #целое число
Вопрос:
def count_digit(num): if (num//10 == 0): return 1 else: return 1 count_digit(num // 10)
у меня есть список под названием — filter_stats, который выглядит так :
filter_stats= [1,2,24,2,353,4534,6,65,6457,6,8,58,58,744, and so on]
Я хочу передать этот список в коде выше. как мне это сделать?
когда я сделал это
count_digit(filter_stats)
это показывает следующее: неподдерживаемые типы операндов для //: «фильтр» и «int»
Комментарии:
1.
count_digit()
работает только с одним номером. Используйте цикл или понимание списка, чтобы вызвать его по списку номеров.
Ответ №1:
Вы можете использовать цикл for:
results = [] for num in filter_stats: results.append(count_digit(num))
Понимание списка также является опцией:
results = [count_digit(num) for num in filter_stats]
Наконец, вы также можете использовать map
, если вам нравятся функциональные подходы:
results = list(map(count_digit, filter_stats))
Ответ №2:
Вы передаете список в функцию count_digit. Поэтому, когда вы делите список на «// 10», это приведет к ошибке. Чтобы увидеть длину числа, вы можете использовать функцию len (), например, len(str(123)).
Итак, в вашем коде вы должны передать элемент списка : например: count_digit(filter_stats[4]) =gt; тогда это работает!
вы можете упростить функцию следующим образом:
def count_digit(num): return len(str(num))
а затем вызовите функцию :
count_digit(filter_stats[4])