嵌套的if语句在列表列表中不返回任何内容

时间:2016-09-06 16:45:01

标签: python python-3.x python-3.4

这是我的列表(列表):

onDestroy()

最终结果是没有为此代码打印任何内容。

我正在尝试检查我的列表(列表中)中有mylist = [ [1, "John", None, "Doe"], [2, "Jane", "group1", "Zee"], [3, "Lex", "group2", "Fee"]] y = 2 for sublist in mylist: if sublist[0] == y: # meaning the third list if sublist[2] == None: print(sublist[2]) # this should print nothing else: print(sublist[2]) #this should print something 值的情况。上面的方法似乎不起作用。

我无法弄清楚它为什么拒绝打印任何东西,但我认为嵌套的None可能与它有关。

2 个答案:

答案 0 :(得分:4)

  

我正在尝试检查列表(列表中)中有无值的情况

然后只检查每个子列表in的成员资格:

for sublist in mylist:
    if None in sublist:
        # do your check
        print("None in list: ", sublist)

打印:

None in list:  [1, 'John', None, 'Doe']

如果您只想查看None是否存在,请使用any

any(None in sub for sub in mylist)
True None

以来{p}返回mylist[0]

答案 1 :(得分:2)

我想我明白你要完成的事情。 您想枚举列表列表,然后查看y - 字段,看它是否包含None

您面临的问题是:当您这样做时:

y = 2 

表示第三个字段,稍后你会这样做:

if sublist[0] == y:

然后您正在检查[0]第一个字段(由sublist表示)是否等于2

它将您带到第三个子列表,而不是子列表枚举中的第三个字段。这是您的代码出错的地方。

您需要完全放弃if sublist[0] == y:,只需检查sublist[y]

即可

以下代码将枚举您的列表列表,然后查看y的{​​{1}}字段:

None

如果您想查看包含mylist = [ [1, "John", None, "Doe"], [2, "Jane", "group1", "Zee"], [3, "Lex", "group2", "Fee"]] y = 2 for sublist in mylist: if sublist[y] == None: print(sublist[y]) # this should print nothing else: print(sublist[y]) #this should print something 任何字段,您会收到以下内容:

None
相关问题