0

私が内包でやっているときに、要素がすでにリストにあるかどうかをどのように確認しますか?

たとえば、次の理解では、重複した番号を制限したいとします。一意の番号をまったく探していませんが、if条件で防止したいと考えています。

[x for x in [1,2,3,1,2,3]]

私は次のようなものを探しています

[x for x in [1,2,3,1,2,3] if not in self]
4

3 に答える 3

1

あなたが探しているのは、リストへの理解変換の設定だと思います。奇妙な構文なしで、あなたが望むことをします。

ans = list({x for x in [1,2,3,1,2,3])})

実際には、次のように単純化することもできます

ans = list(set([1,2,3,1,2,3]))

しかし、最初の方がパフォーマンスが優れていると思います。

于 2013-07-23T16:14:31.770 に答える
0

作成中に理解にアクセスすることはできません (私の知る限り、間違っている場合は誰かが私を修正してください!) が、あなたの場合は a を使用するだけsetで重複を排除できます。

uniques = set([1, 2, 3, 1, 2, 3])
print(uniques) # >>> set([1, 2, 3])

リスト内包表記をより複雑にする必要がある場合は、元のリストではなくセットから内包表記にインデックスを付けることができます。

mylist = [1, 2, 3, 1, 2, 3]
print([x*x for x in set(mylist)]) # >>> [1, 4, 9]

作成中にリストに直接アクセスする必要がある場合は、内包ではなく明示的なループを使用する必要があります。

于 2013-07-23T15:13:23.617 に答える
0
x = [1,2,3,1,2,3]
y = [x[n] for n in range(len(x)) if x.index(x[n]) == n]

?

現時点では、内包表記よりも for ループを使用して単純に記述した方がおそらく読みやすいと思います。

于 2013-07-23T15:26:56.753 に答える