は、あなただけのリストを反復処理し、リスト内の項目のany
(i,j)
ため、i
は、追加したい項目(a,b)
でb
と同じであるかどうかを確認できます。 (少なくとも、私はあなたの状態を理解する方法ですが、条件が多少異なる場合、これはそれに応じて適応するのは簡単でなければなりません。)
def cond_add(lst, item):
a, b = item
if not any(i == b for (i, j) in lst):
lst.append(item)
lst = [[1,2],[1,3],[3,4],[4,6]]
cond_add(lst, [6,1])
cond_add(lst, [6,5])
print(lst)
あなたが複数の要素を追加したい場合は、それがset
から作成するために支払うことになります最初の要素は、個々のアイテムごとに一定の時間内にチェックを行うことができます。 (あなたは、個々の要素を追加するために同じことを行うことができますが、あなたは、各項目の後にセットを更新する必要があると思います。)
def cond_add_many(lst, items):
first = set(i for (i, j) in lst)
for (a,b) in items:
if b not in first:
lst.append((a,b))
first.add(a)
lst = [[1,2],[1,3],[3,4],[4,6]]
cond_add_many(lst, [[6,1], [6,5], [7,6]])
print(lst)
その後、両方のケースでは、lst
は可読性/保守性から[[1, 2], [1, 3], [3, 4], [4, 6], (6, 5)]
'[b、j]'がリストにない場合は、実際にはどういう意味ですか? –
リストを反復して各要素の要素と比較するか、パフォーマンスがより重要な場合は、すべてのiとjのセットを作成してチェックしてください。 –
@tobias_k右、2番目のインデックス([6,1]は1です)がリストの最初のインデックスのいずれとも等しくない場合にのみ、要素を追加する必要があります –