给定三元组列表,返回包含每个三元组的第二个元素的列表(如果项目不是三元组,则返回该元素的无)

时间:2017-03-13 01:20:37

标签: python

我必须使用doctest运行并检查以下内容

>>> extract_second([('a',3,'x'),('b',4,'y')])     
[3, 4]

我能够使用以下方式成功运行:

x[1] for x in elements

但是第二次测试没有成功,这是:

>>> extract_second([('c',5,'z'),('d',6)])
[5, None]

然后我使用以下代码通过一些研究来解决它

lst=[(1,2,3),(4,5,6)]

for i in lst:
    if len(i) != 3:
        print "None"
    else:
        print i[1],

之前我能够根据需要打印输出,但括号和逗号不包含在其中

预期结果:

[3,4]
[5, None]

收到输出:

3 4
5 None

1 个答案:

答案 0 :(得分:1)

print在循环中而不是构建一个新列表:

result = []
for i in lst:
    if len(i) != 3:
        result.append(None)
    else:
        result.append(i[1])
return result

应该给你预期的输出。

注意:您仍然可以使用列表解析来执行此操作:

>>> elements = [('c',5,'z'),('d',6)]
>>> [x[1] if len(x) == 3 else None for x in elements]
[5, None]