2

タプルのリストが 2 つあります。

最初のリストには、次の 2 つの要素を持つタプルがあります。

list_a = [('a','apple'), ('b','banana'), ('c','cherry')]

2 番目のリストには、要素が 1 つだけのタプルがあります。

list_b = [('d',), ('e',), ('a',)]

タプルの最初の要素が list_b に含まれているタプルを list_a から削除する必要があります。したがって、目標は list_a がレンダリングされることです。

list_a = [('b','banana'), ('c','cherry')]

私はもう試した:

for la in list_a:
   if la[0] in list_b:
      list_a.remove(la)
4

1 に答える 1

9

ループしているリストから要素を削除することはできません。代わりにリスト内包表記を使用してください。

list_a = [la for la in list_a if la[:1] not in list_b]

la[:1](単一要素)タプルでテストするためにテストすることに注意してください。la[0]単一の文字列です。

これを頻繁に行う必要がある場合は、list_b代わりに set for を使用することを検討してください。

set_b = set(list_b)

セット内のルックアップには一定の時間がかかりますが、リスト メンバーシップ テストの直線的な時間はかかります。

于 2013-01-09T14:48:38.577 に答える