このようなものは機能しますか?元のリストを変更するのではなく、新しいリストを作成することに注意してください。
In [4]: furniture = ['desk', 'Lamp', 'Chair', 'shelf']
In [5]: [item for item in furniture if item.lower() != 'chair']
Out[5]: ['desk', 'Lamp', 'shelf']
またはcapitalize
:
In [6]: [item for item in furniture if item.capitalize() != 'Chair']
Out[6]: ['desk', 'Lamp', 'shelf']
ただし、@ mgilsonが指摘しているように、これにより、最初のオカレンスだけでなく、リスト内のすべてのオカレンスが削除されます。彼の答えははるかに明確ですが、最初の一致だけを削除できる完全に無意味/不必要な方法は次のとおりです。
def first(l, value):
new_l = [item for item in enumerate(l) if item[1].lower() == value]
if new_l:
return min(new_l)[1]
return
# Original list
furniture = ['desk', 'Lamp', 'chair', 'shelf', 'chair', 'chair', 'Chair', 'Chair']
print 'Original:', furniture
for word in ('chair', 'dogs'):
f = first(furniture, word)
if f:
furniture.remove(f)
print 'Removing:', word, furniture
出力:
Original: ['desk', 'Lamp', 'chair', 'shelf', 'chair', 'chair', 'Chair', 'Chair']
Removing: chair ['desk', 'Lamp', 'shelf', 'chair', 'chair', 'Chair', 'Chair']
Removing: dogs ['desk', 'Lamp', 'shelf', 'chair', 'chair', 'Chair', 'Chair']