Python 计算列表中的字符数
编写一个名为count_numbers的函数,该函数接收包含数字的列表并返回列表中的数字计数。您的程序必须满足将数字列表作为输入参数元素的可能性。您可以假设输入参数最多是一个二维列表 以下是运行文件调用函数时的输出: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
>>> 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