2016-01-22 59 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") 
相关问题