2017-02-20 42 views
1

什麼是使list.remove()在同一行上表現爲列表的行爲,以執行諸如元素搜索或索引等操作(即使可迭代或可下載腳本)?例如。我正在嘗試上述哪些方法無效。在一行中檢查list.remove(y)中的x

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

'myList.remove( 'B'); 'myList'中的'a' – BallpointBen

+0

感謝您的回答,但這是同一行上的兩個不同陳述。例如,我不能在if語句中使用它。例如。 '如果列表中有== 3和'a'(myList.remove('c'))'。再次,我的代碼示例返回錯誤當然是 – Tony

+1

@Tony什麼是真正的問題? – Elmex80s

回答

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' 
0

您可以快速檢查是否b是在列表中,刪除第一

myList.remove('b') if 'b' in myList else None 

然後使用:

'a' in myList 

要檢查'a'是否在列表中(刪除'b'

+0

這樣做**不**回答我認爲的問題。 –

+0

啊拍,這是真的。我會迅速改變它 – titipata

1

remove編輯列表並返回None,所以你正在做的事情將無法工作。您需要一個函數返回一個新的列表,並刪除該元素。如果你真的需要一個班輪:

'a' in [x for x in myList if x is not 'b'] 
+1

變體:'''任何('a'==事物在myList中的東西如果事物!='b')''' – wwii

+0

另外,如果列表有重複,這種情況下,我很確定沒有一行(或至少不是pythonic) – mathguyjohn

1

list.remove()功能確實什麼回報。

所以,你可以在兩個步驟檢查:

myList = ['a', 'b', 'c'] 

myList.remove('b') 

if 'a' in myList: 
    #Some logic 
+0

'list.remove()'returns' None' –

+0

所以它不會返回任何有用的東西。 – Barmar

相關問題