我试图计算列表中数字的出现次数。所以基本上,我有一个清单:
lst = [23,23,25,26,23]
,程序将首先提示用户从列表中选择一个数字。
"Enter target number: "
例如,如果目标是23,那么它将打印出列表中出现23次的次数。
output = 3 #since there are three 23s in the list
这是我尝试过的,它导致了一个无限循环:
lst = [23,23,24,25,23]
count = 0
i = 0
prompt= int(input("Enter target: "))
while i< len(lst)-1:
if prompt == lst[i]:
count+=1
print(count)
else:
print("The target does not exist in the list")
我不应该使用任何库,所以我真的很感激,如果有人可以通过指出我写的代码中的错误来帮助我。此外,我更喜欢使用&#39; while循环&#39;因为我练习使用while循环,我至少理解。
答案 0 :(得分:2)
i
为0 始终,这会导致无限循环。考虑在循环结束时将i
增加1。
此外,您需要一直到列表的末尾,因此while循环条件应为:
while i < len(lst):
把所有东西放在一起应该这样:
while i< len(lst)a:
if prompt == lst[i]:
count+=1
print(count)
else:
print("The target does not exist in the list")
i += 1
输出:
Enter target: 23
1
2
The target does not exist in the list
The target does not exist in the list
3
顺便说一句,这是一个更加pythonic实现的样子:
lst = [23,23,24,25,23]
count = 0
target = int(input("Enter target: "))
for number in lst:
if number == target:
count += 1
print(count)
输出:
Enter target: 23
3
或者如果您想使用内置函数,可以尝试:
print(lst.count(target))
正如smarx指出的那样。
答案 1 :(得分:1)
你应该在循环结束后打印,而不是每个循环
lst = [23,23,24,25,23]
count = 0
i = 0
prompt= int(input("Enter target: "))
while i< len(lst):
if prompt == lst[i]:
count+=1
i+=1
if count>0:
print(count)
else:
print("The target does not exist in the list")
答案 2 :(得分:1)
您可以使用count
执行此任务:
lst = [23,23,24,25,23]
prompt= int(input("Enter target: "))
cnt = lst.count(prompt)
# print(cnt)
if cnt:
print(cnt)
else:
print("The target does not exist in the list")
输出
Enter target: 23
3
Enter target: 3
The target does not exist in the list
答案 3 :(得分:1)
您可以使用collections.Counter
来达到您想要的效果。例如:
>>> from collections import Counter
>>> lst = [23,23,25,26,23]
>>> my_counter = Counter(lst)
# v element for which you want to know the count
>>> my_counter[23]
3
如official document中所述:
Counter
是用于计算可哈希对象的dict子类。它是一个 无序集合,其中元素存储为字典键和 他们的计数存储为字典值。计数是允许的 任何整数值,包括零或负数。柜台班 类似于其他语言的包或多重集。
答案 4 :(得分:1)
您可以尝试使用filter
。
>>> lst = [23,23,24,25,23]
>>> prompt= int(input("Enter target: "))
Enter target: 23
>>> len(filter(lambda x: x==prompt, lst))
3
>>> prompt= int(input("Enter target: "))
Enter target: 24
>>> len(filter(lambda x: x==prompt, lst))
1