【发布时间】:2018-04-23 13:22:20
【问题描述】:
我正在尝试练习 Python 练习,但使用列表推导来解决问题,而不是书中显示的初学者风格循环。有一个例子,它要求将一个数字列表放入一个偶数列表中,但是它们必须在子列表中,这样如果数字一个接一个地跟随而没有被奇数打断,它们应该被放入一起进入一个子列表:
my_list = [2,3,5,7,8,9,10,12,14,15,17,25,31,32]
desired_output = [[2],[8],[10,12,14],[32]]
因此,您可以在上面的所需输出中看到,10、12、14 是偶数,它们彼此接续而不会被奇数中断,因此它们一起放入子列表中。 8 的两边都有一个奇数,因此在移除赔率后它会单独放入一个子列表中。
我可以使用下面这样的列表理解轻松组合一个偶数列表,但我不知道如何将它放入子列表中,如所需的输出显示。有人可以建议使用列表理解(或生成器,我不介意哪个,因为我目前正在尝试学习两者)。谢谢!
evens = [x for x in my_list if x%2==0]
print(evens)
[2, 8, 10, 12, 14, 32]
【问题讨论】:
-
for 循环没有什么“初学者风格”。对于这个特殊问题,请使用
itertools.groupby() -
我建议先学习旧循环,这是基础。 (假设您从 Comprehensions 开始)
标签: python python-3.x list list-comprehension