【问题标题】:I want to pass a list in a definition function to count the number of digits in a number that's in a list我想在定义函数中传递一个列表来计算列表中数字的位数
【发布时间】:2022-01-12 18:59:50
【问题描述】:
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) 

它显示:不支持的操作数类型 //: 'filter' 和 'int'

【问题讨论】:

  • count_digit() 仅适用于单个号码。使用循环或列表推导在数字列表上调用它。

标签: python function integer


【解决方案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]) => 然后就可以了!

    你可以像这样简化函数:

    def count_digit(num):
        return len(str(num))
    

    然后调用函数:

    count_digit(filter_stats[4])
    

    【讨论】:

      猜你喜欢
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      相关资源
      最近更新 更多