在子列表中返回每四个数字最简洁的方法是什么,将所有数字列表视为一个列表?
A = [ ['a',[1,2,3]], ['b',[4,5]], ['c',[6,7,8,9,10]] ]
打印清单A:
时,我希望结果如下所示[ ['a',[1]], ['b',[5]], ['c',[9]] ]
我可以看到这与拼接单个列表的方式类似,我会使用[:: 4]之类的东西。我猜我必须在这里使用其他东西,将数字列表视为一个列表。
答案 0 :(得分:3)
我使用itertools.count()
,这是一个方便的生成器,它返回越来越多的数字。使用它,它几乎与您最初提出的问题相同,仍然使用嵌套列表理解:
>>> from itertools import count
>>> c = count()
>>> B = [[let, [n for n in nums if next(c) % 4 == 0]] for let, nums in A]
>>> B
[['a', [1]], ['b', [5]], ['c', [9]]]
这是有效的,因为第一次调用next(c)
,它给出0,0%4 == 0所以我们保持n
,下次我们得到1所以我们不保留它,等
[回答关于删除偶数元素的原始问题:]
您可以嵌套列表推导:
>>> A = [['a',[1,2,3]], ['b',[4,5]], ['c',[6,7,8,9,10]]]
>>> B = [[letter, [n for n in nums if n % 2 != 0]] for letter, nums in A]
>>> B
[['a', [1, 3]], ['b', [5]], ['c', [7, 9]]]
答案 1 :(得分:-1)
你可以做一个列表理解! list = [x [:: 2] for x in A]
与你所写的内容更接近的是:
list =[[x[0], x[1][::2]] for x in a]