我想使用元组列表(基于其第一个元素)创建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
。有什么建议吗?
答案 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']