如果我想通过其值而不是索引删除项目,我该怎么办?
animals = ['tiger', 'snake', 'penguin','giraffe']
Run Code Online (Sandbox Code Playgroud)
说我想删除'penguin'而不打字del animals[2]我怎么去呢?
我试过打字,del animals['penguin']但它不起作用......
您必须找到索引,或过滤列表.
寻找指数:
del animals[animals.index('penguin')]
Run Code Online (Sandbox Code Playgroud)
或者,您可以删除值:
animals.remove('penguin')
Run Code Online (Sandbox Code Playgroud)
其中list.remove()被记录为被equilalent到del listobj[listobj.index(value)]以上版本.
这些中的任何一个都可以引发IndexErrorif 'penguin'不是列表的一部分.如果列表中有多个值的副本,则仅删除第一个此类副本.
过滤将删除所有此类副本:
animals = [a for a in animals if a != 'penguin']
Run Code Online (Sandbox Code Playgroud)
这不会引起例外; 它构建了一个全新的值列表,不等于'penguin'.