Python 元组中所有行元素的同时条件
我有以下格式的元组:Python 元组中所有行元素的同时条件,python,tuples,Python,Tuples,我有以下格式的元组: [(None, datetime.datetime(2012, 9, 14, 15, 0)), (None, None), (None, None), (None, None), (None, datetime.datetime(2012, 9, 14, 16, 0))] 我想迭代元组,检查两个组件是否都为null,如果为null,则将它们从项中删除-只留下以下内容: [(None, datetime.datetime(2012, 9, 14, 15, 0)), (N
[(None, datetime.datetime(2012, 9, 14, 15, 0)), (None, None),
(None, None), (None, None), (None, datetime.datetime(2012, 9, 14, 16, 0))]
我想迭代元组,检查两个组件是否都为null,如果为null,则将它们从项中删除-只留下以下内容:
[(None, datetime.datetime(2012, 9, 14, 15, 0)),
(None, datetime.datetime(2012, 9, 14, 16, 0))]
在单个循环中同时执行检查的最简洁的方法是什么?使用列表理解和元组解包:
output_list = filter(any, input_list)
>>> lst = [(None, datetime.datetime(2012, 9, 14, 15, 0)), (None, None),
... (None, None), (None, None), (None, datetime.datetime(2012, 9, 14, 16, 0))]
>>> [(a,b) for a,b in lst if a or b]
[(None, datetime.datetime(2012, 9, 14, 15, 0)),
(None, datetime.datetime(2012, 9, 14, 16, 0))]
我会使用一个列表和理解
你可以用any代替lambda t:anyt。回答不错,其他的也可以,但这是我要找的一个额外的,如果我只想得到所有项目都没有的行怎么办?output\u list=filterlambda t:not anyt,input\u list使用列表理解,如其他答案所示,在Python2和Python3中都可以保持不变——假设目标是实际生成一个输出列表。它也可能执行得更快。
left = [x for x in a if any(x)]
>> [(None, datetime.datetime(2012, 9, 14, 15, 0)), (None, datetime.datetime(2012, 9, 14, 16, 0))]