2016-01-22 117 views
-1

假設我有以下幾點:檢查列表中包含了列表作爲元素

z = [3.0, 1.0, 0.2] 

現在我要檢查它是否包含列表或沒有。 我已經試過類似:

if not isinstance(z[0], list): 
    z = [z] 
    print("Im no list") 

如果它的情況是

z = [[3.0, 1.0, 0.2]] 

那麼if not isinstance(z[0], list):應該不會觸發,但它確實。

有人可以給我一個提示,我可以檢查,如果列表包含另一個列表?

編輯:我很抱歉,最初令人困惑的問題。我已經有了正確的答案,並且也發佈在下方。我沒有注意,我的問題是由於這樣的事實造成的,即我第一次有一個列表,後來在一個numpy數組上。

+2

什麼是'z'?它是'分數'嗎? – furas

+0

對不起z =分數 – Michael

+1

[您的第三次編輯](http://stackoverflow.com/revisions/34955189/3),它不會觸發'print'給我。 –

回答

4

這條線:

isinstance(scores[0], list) 

將返回False。使用if not將意味着if中的子句將成爲真,因此正文將被執行。

z包含listz = [[1, 2, 3]]它不會觸發因爲isinstance調用返回Trueif not恢復,爲False

爲了有效地檢查,如果一個列表包含其他列表中可以考慮使用any,如果返回True你知道它的作用:

>>> z = [1, 2, [3.0, 1.0, 0.2]] 
>>> any(isinstance(i, list) for i in z) 
True 
+0

對不起,我犯了另一個錯誤。我的意思是它不應該觸發,如果z = [[...]] – Michael

+1

當'z = [[...]]' –

+1

時它不會觸發是的,我剛剛意識到它不是因爲這個,在上下文即時通訊使用numpy陣列..我標記爲關閉 - 抱歉,顯然我有點累 – Michael

0

給一個列表「LST」,這將打印出所有的元素是列表。

for i in lst: 
    if isinstance(i, list): 
     print(i, lst[i]) 
0
for i in z: 
    if type(i)==list: 
     print("its a list") 
相關問題