26

属性 ID を持つオブジェクトのリストがあり、特定の ID を持つオブジェクトのインデックスを見つけたいです。私はこのようなものを書きました:

index = -1
for i in range(len(my_list)):
    if my_list[i].id == 'specific_id'
        index = i
        break

しかし、あまりよく見えません。より良いオプションはありますか?

4

5 に答える 5

50

ループenumerate内で値とインデックスの両方が必要な場合に使用します。for

for index, item in enumerate(my_list):
    if item.id == 'specific_id':
        break
else:
    index = -1

または、ジェネレータ式として:

index = next((i for i, item in enumerate(my_list) if item.id == 'specific_id'), -1)
于 2013-10-03T14:50:05.887 に答える
7

使用できますenumerate

for index, item in enumerate(my_list):
    if item.id == 'specific_id':
        break
于 2013-10-03T14:49:59.167 に答える