Python:检查列表中值的出现次数

23 投票
6 回答
77262 浏览
提问于 2025-04-16 08:33
lst = [1,2,3,4,1]

我想知道在这个列表中,数字1出现了两次,有没有什么简单有效的方法可以做到这一点?

6 个回答

4

如果你想找到多个出现的位置,这段代码会告诉你每个出现的索引:

>>> lst=[1,2,3,4,5,1]
>>> tgt=1
>>> found=[]
>>> for index, suspect in enumerate(lst):
...     if(tgt==suspect):
...        found.append(index)
...
>>> print len(found), "found at index:",", ".join(map(str,found))
2 found at index: 0, 5

如果你想知道列表中每个项目的数量,可以用这段代码:

>>> lst=[1,2,3,4,5,2,2,1,5,5,5,5,6]
>>> count={}
>>> for item in lst:
...     count[item]=lst.count(item)
...
>>> count
{1: 2, 2: 3, 3: 1, 4: 1, 5: 5, 6: 1}
21

你是在问列表中的每个项目是否都是独一无二的吗?

len(set(lst)) == len(lst)

比如说,1这个数字出现了几次?

lst.count(1) > 1

要注意,上面的方式效率不是最高的,因为它不会提前停止计算——即使1出现了两次,它还是会继续检查后面是否还有更多的出现。如果你想让它提前停止,就需要写一些稍微复杂一点的代码。

你是在问第一个元素出现了几次吗?

lst[0] in lst[1:]

你想知道每个元素出现的次数吗?

import collections
collections.Counter(lst)

还是说你有其他的问题?

50

lst.count(1) 这个代码会告诉你数字1在列表中出现了多少次。如果你要在列表里数东西,时间复杂度是O(n),也就是说,随着列表里东西的增多,所需的时间也会增加。

列表的通用函数是 list.count(x),它会返回数字 x 在列表中出现的次数。

撰写回答