我写了这个代码来计算列表中元素的出现但我有一个问题,我不知道为什么..任何帮助!
l = [1,2,3,4,5,5,5,1,2,3]
y = input ("what is the number : ")
x = int (y)
n=len(l)-1
def Count (l,n,x):
count = 0
for i in range (0,n):
if (l[i] == x):
count = count + 1
elif (l[i]>x):
break
return count
print (Count(l,n,x))
输出没有意义所以我只想知道我的代码中的错误.. 问候
答案 0 :(得分:1)
如果您正在寻找一个简短的解决方案:
def occurrences(mylist, number):
return len([n for n in mylist if number == n])
答案 1 :(得分:0)
l = [1, 2, 3, 4, 5, 5, 5, 1, 2, 3]
y = input("what is the number : ")
x = int(y)
n = len(l)
def Count(l, n, x):
count = 0
for i in range(0, n):
if (l[i] == x):
count = count + 1
return count
print(Count(l, n, x))
您打算检查列表是否已排序?
elif (l[i]>x):
break
也是一个简短的版本:
print(l.count(x))
答案 2 :(得分:0)
这样可行:
a = [1,1,2,3,3,4,4,5,5,5,5,5,6]
b = {}
for x in set(a):
b[x] = 0
for y in a:
if x == y:
b[x] += 1
print(b)
(它可能效率非常低,但它适用于任何列表,您可以同时得到每个项目的计数(好的或坏的,由您决定))
答案 3 :(得分:0)
如果没有实际输出,我会注意到一些问题:
您的elif
语句似乎依赖于列表在传递到您的函数时进行排序的事实,但您不会在函数之前或之中对其进行排序。
您不检查最后一个元素,因为range
命令不包含最高值(例如range(1,5)
生成数字1, 2, 3, 4
但不 5
,因此请将for
循环更改为n+1
。
您的return
语句位于for
循环内,这意味着在for
循环执行一次后,它会立即返回。您应该将return
语句取消一个缩进级别,以便在循环完全完成之前不会返回。