1
identical = 0
while x < len(BigList):
    while y < len(BigList):
        if BigList[x][0] == BigList[y][0] and y != x:
            identical += 1
        y += 1
    x += 1

如何正确查看0th大列表中每个列表的元素是否等于大列表中另一个列表中的另一个第 0 个元素?

即,我需要[[1,2],[2,3],[1,4],[2,5]]制作identical=2,因为 2 个列表的第 0 个元素等于另一个列表的0th元素

蒂亚

4

3 回答 3

6
identical = len(BigList) - len(set(item[0] for item in BigList))

重复项数 = BigList 中的项数减去唯一的第 0 个索引项数

于 2012-10-04T18:20:12.670 回答
2

首先列出第 0 个元素...然后计算出现次数(如果您是 2.7+,则可以在第零个列表中使用 collections.Counter

zeros = [mylist[0] for mylist in biglist]
my_dict = dict([(c,zeros.count(c)) for c in zeros])
dup_elems = filter(lambda key:my_dict[key]>1, my_dict.keys())
print len(dup_elems)
于 2012-10-04T18:19:54.117 回答
0
  1. 计算在索引 0 处共享元素的子列表的数量。
  2. 计算相同子列表的数量。
  3. 两者的区别在于你所追求的。

代码:

firstElems = zip(*L)[0]
firstSames = sum(v for v in collections.Counter(firstElems).values if v != 1)
equals = sum(v for v in collections.counter(tuple(l) for l in L).values if v!=1)
answer = firstSames - equals

希望这可以帮助。

于 2012-10-04T18:19:27.250 回答