将列表中的每个元素与所有其他元素进行比较

2024-04-20 14:21:10 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以将一个列表中的所有元素(例如[4,3,2,1,4,3,2,1,4])与所有其他元素进行比较,并为每个元素返回它不同于其他元素的数量(例如,对于上面的列表[6,7,7,6,7,7,7])?然后我需要从这个列表中添加数字。在


Tags: 方法元素列表数量数字
3条回答
li =  [4, 3, 2, 1, 4, 3, 2, 1, 4]

from collections import Counter

c = Counter(li)
print c
length = len(li)

print [length - c[el] for el in li]

在执行[length - c[el] for el in li]之前创建{}比为列表中的每个元素i做{}要好,因为这意味着count()会多次执行相同的计数(每次遇到给定的元素,它都会计数)

顺便说一句,另一种写法:

^{pr2}$

你可以用count()方法得到类似的计数器。
再减去总数。
用一个理解列表做一行。在

>>> l = [4, 3, 2, 1, 4, 3, 2, 1, 4]
>>> [ len(l)-l.count(i) for i in l ]
[6, 7, 7, 7, 6, 7, 7, 7, 6]

对于Python 2.7:

test = [4, 3, 2, 1, 4, 3, 2, 1, 4]
length = len(test)
print [length - test.count(x) for x in test]

相关问题 更多 >