Python:使用布尔项合并列表列表?

时间:2016-02-02 17:51:55

标签: python list merge

这里我需要将列表列表与布尔项合并。

  

像这样输入

list = [[[3, [1, 2]]], [[1, [2, 3]]], False, [[4, [4, 5]]]]
  

除了结果

[[3, [1, 2]], [1, [2, 3]], False, [4, [4, 5]]]
  

我试过这个

res = []
for x in list:
   res.append(x)
print res

提前致谢...

1 个答案:

答案 0 :(得分:3)

如果子列表有效(if sub),则可以使用列表推导来保留子列表的第一个元素,否则保留子列表本身:

>>> lst = [[[3, [1, 2]]], [[1, [2, 3]]], False, [[4, [4, 5]]]]
>>> [sub[0] if sub else sub for sub in lst]
[[3, [1, 2]], [1, [2, 3]], False, [4, [4, 5]]]

注意:不要使用python关键字和内置类型的名称作为变量和对象名称。

正如@Padraic Cunningham建议的那样,为了更精确地使用isinstance()

>>> [sub[0] if isinstance(sub, list) else sub for sub in lst]
[[3, [1, 2]], [1, [2, 3]], False, [4, [4, 5]]]