通过在元组列表上应用条件来创建列表

时间:2014-12-04 14:33:48

标签: python list python-2.7

我想使用元组列表(基于其第一个元素)创建2个列表(list1的值等于零,列表2的值大于零)。以下是我正在使用的:

a=[(1.2,'197301'),(0,'19980101'),(10,'19010101'),(0,'19830101')]
list1 = [a for a in a if a == 0]
list2 = [a for a in a if a != 0]

list1[(0, '19980101'), (0, '19830101')],但list2会返回:TypeError: 'int' object is not iterable。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您在列表理解期间重新定义a

>>> a=[1.2,'19730101',0,'19980101',10,'19910101',0,'19830101']
>>> list1 = [a for a in a if a == 0]
>>> a
'19830101'

如果更改变量,则效果很好:

>>> list1 = [i for i in a if i == 0]
>>> list2 = [i for i in a if i != 0]
>>> list1
[0, 0]
>>> list2
[1.2, '19730101', '19980101', 10, '19910101', '19830101']