Python 计算列表中的字符数

Python 计算列表中的字符数,python,python-3.x,Python,Python 3.x,编写一个名为count_numbers的函数,该函数接收包含数字的列表并返回列表中的数字计数。您的程序必须满足将数字列表作为输入参数元素的可能性。您可以假设输入参数最多是一个二维列表 以下是运行文件调用函数时的输出: >>> print("Count of numbers", count_numbers([4,6,[1,2],10,[-1,-3]])) Count of numbers:7 我得到的答案是5而不是7。 以下是我的工作: def count_numbers(nu

编写一个名为count_numbers的函数,该函数接收包含数字的列表并返回列表中的数字计数。您的程序必须满足将数字列表作为输入参数元素的可能性。您可以假设输入参数最多是一个二维列表

以下是运行文件调用函数时的输出:

>>> print("Count of numbers", count_numbers([4,6,[1,2],10,[-1,-3]]))
Count of numbers:7
我得到的答案是5而不是7。 以下是我的工作:

def count_numbers(numbers):
    result = []
    for element in numbers:
       for subelement in [element]:
           result += [subelement]
           results = len(result)
    return results

我不太确定你该做什么,但我想这应该行得通:

for elem in line:
  if type(elem) == int:
     result += 1
  elif type(elem) == list:
     for sub in elem:
        if type(sub) == int:
           result += 1

请记住,这个代码真的很难看;但是它应该有助于您开始

如果您想手动执行此操作,您需要测试每个元素的类型,检查您是处理int还是列表,如果列表需要创建更深的循环。计算完元素后,需要将其附加到列表中,以进行核对,从而不再计算同一元素

lst = [4,6,[1,2],10,[-1,-3]]

count = 0
seen = []
for i in lst:
    if isinstance(i, list):
        for j in i:
            if j not in seen:
                count += 1
                seen.append(j)
            else:
                pass
    else:
        if i not in seen:
            count += 1
            seen.append(i)
        else:
            pass

print(count)
您可以将列表展平并使用集合。还可以使用计数器


你试过什么,到底有什么问题?你的问题是什么?我不知道如何得到数字的计数=7。我得到的答案是5。然后给出一个格式正确的数字来说明问题。在数字列表中添加一个重复的数字,你的计数将被取消
from collections import Counter
lst = [4,6,[1,2],10,[-1,-3]]
new_lst = []

for i in lst:
    if isinstance(i, list):
        new_lst.extend(i)
    else:
        new_lst.append(i)

c = Counter(new_lst)
print(c) # Counter({4: 1, 6: 1, 1: 1, 2: 1, 10: 1, -1: 1, -3: 1})
print(sum(c.values())) # 7