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 番目の要素と等しいかどうかを正しく確認するにはどうすればよいですか?

つまり、 2 つのリストの 0 番目の要素が別のリストの要素と等しいため、[[1,2],[2,3],[1,4],[2,5]]作成する必要があります。identical=20th

ティア

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以降の場合は、0番目のリストで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 に答える