使list.remove()作为列表在同一行上执行元素搜索或索引等操作(即make iterable或subscriptable)的方法是什么?例如。我正在尝试以上哪些无法正常工作。
myList = ['a', 'b', 'c']
'a' in myList.remove('b')
'a' in list(myList.remove('c'))
错误:
Traceback (most recent call last):
File "<pyshell#83>", line 1, in <module>
'a' in list(myList.remove('c'))
TypeError: 'NoneType' object is not iterable
在第一次回复后编辑。
我要做的是以下内容。
myList = ['a', 'b', 'c']
if 'a' in myList:
myList.remove('b')
if 'c' in myList:
...
所以我想知道我是否可以在同一个声明中
答案 0 :(得分:1)
remove
对列表进行了编辑并返回None,因此您所做的不起作用。您需要一个函数来返回 new 列表,并删除该元素。如果你真的需要一个单行:
'a' in [x for x in myList if x is not 'b']
答案 1 :(得分:1)
list.remove()
函数不返回任何内容。
所以你可以分两步检查:
myList = ['a', 'b', 'c']
myList.remove('b')
if 'a' in myList:
#Some logic
答案 2 :(得分:1)
希望这样做
if 'a' in your_list and 'c' in set(your_list) - {'b'}:
# some code
pass
我在这里使用sets
。请注意,语句'b'
仍然在列表中。
但从逻辑的角度来看,我更喜欢测试这个
{'a', 'c'} <= set(your_list) and 'b' != 'c'
答案 3 :(得分:0)
您可以快速检查列表中是否有b
并先将其删除
myList.remove('b') if 'b' in myList else None
然后使用:
'a' in myList
检查列表中是否有'a'
(删除'b'
)