私が内包でやっているときに、要素がすでにリストにあるかどうかをどのように確認しますか?
たとえば、次の理解では、重複した番号を制限したいとします。一意の番号をまったく探していませんが、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]
私が内包でやっているときに、要素がすでにリストにあるかどうかをどのように確認しますか?
たとえば、次の理解では、重複した番号を制限したいとします。一意の番号をまったく探していませんが、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]
作成中に理解にアクセスすることはできません (私の知る限り、間違っている場合は誰かが私を修正してください!) が、あなたの場合は 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]
作成中にリストに直接アクセスする必要がある場合は、内包ではなく明示的なループを使用する必要があります。
x = [1,2,3,1,2,3]
y = [x[n] for n in range(len(x)) if x.index(x[n]) == n]
?
現時点では、内包表記よりも for ループを使用して単純に記述した方がおそらく読みやすいと思います。