Я хочу передать список в функцию определения, чтобы подсчитать количество цифр в числе, которое находится в списке

#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])