我有一个列表:
a = [[0, 2, 5, 12], [1, 2, 3, 4, 8, 9], [2, 4, 12], [3, 8, 9], [4, 5, 7]]
我想得到2
是因为a[0][-1] == a[2][-1], a[1][-1] == a[3][-1]
最后两个值重复。
我尝试使用sum(1 for sublist in a if sublist[-1] == sublist[-1])
它失败了,我为此陷入困境。
答案 0 :(得分:2)
您可以使用collections.Counter
计算最后一项的出现次数:
from collections import Counter
last = Counter([i[-1] for i in a])
# Counter({7: 1, 9: 2, 12: 2})
然后计算其中有多少个大于1
:
sum(1 for k,v in last.items() if v>1)
# 2
答案 1 :(得分:0)
从列表中创建一组最后的值,然后计算长度:
len(a) - len({x[-1] for x in a})
# 2
答案 2 :(得分:0)
由于重复项的位置无关紧要,所以问题很简单,就是列表长度减去唯一值。所以:
last_elements=[i[-1] for i in a]
num_duplicates=len(last_elements)-len(set(last_elements)