です。問題はネストです。あなたは要素までずっと働かなければなりません。たとえば :
for item in list1:
for list2_item in list2:
if item[0] in list2_item:
print(item)
出力:
['i2_instance_floating_ip_association']
['i1_v1_instance_volume_attach']
別のアプローチは、最初の両方のリストを平らにしてセットに変換し、次のようになります。
flat1 = set(x[0] for x in list1)
flat2 = set(y for x in list2 for y in x)
print(flat1 & flat2)
出力:
{'i1_v1_instance_volume_attach', 'i2_instance_floating_ip_association'}
追加デバッグと何が起こるかを学習するためのいくつかの印刷物:
for item in list1:
print('item', item)
for list2_item in list2:
print('list2_item', list2_item)
if item[0] in list2_item:
print(' found', item[0], 'in', list2_item)
else:
print(' did not find', item[0], 'in', list2_item)
出力:
item ['i2_instance_floating_ip_association']
list2_item ['i2_instance_floating_ip_association', 'i2_v1_instance_volume_attach']
found i2_instance_floating_ip_association in ['i2_instance_floating_ip_association', 'i2_v1_instance_volume_attach']
list2_item ['i1_instance_floating_ip_association', 'i1_v1_instance_volume_attach']
did not find i2_instance_floating_ip_association in ['i1_instance_floating_ip_association', 'i1_v1_instance_volume_attach']
item ['i1_v1_instance_volume_attach']
list2_item ['i2_instance_floating_ip_association', 'i2_v1_instance_volume_attach']
did not find i1_v1_instance_volume_attach in ['i2_instance_floating_ip_association', 'i2_v1_instance_volume_attach']
list2_item ['i1_instance_floating_ip_association', 'i1_v1_instance_volume_attach']
found i1_v1_instance_volume_attach in ['i1_instance_floating_ip_association', 'i1_v1_instance_volume_attach']
私はあなたの方法を使用して出力を取得しています。私は、list2の場合はlist1の中で[for i]のようなトラバースがすべての要素を通過しているはずだと考えました。 –
ループ版にプリントを追加して、実際にどのようなアイテムが表示されているかを確認してください。 –