这一直给我一些麻烦一段时间,也许我有隧道视觉。给定一个整数列表,生成一个新的列表,其中每组相邻的副本已经变成一个元组。使用列表理解,元组和itertools.groupby
例如,给出的列表:[1, 2, 3, 3, 4, 5, 5, 5, 6]
生成的列表包含:[1, 2, (3, 3), 4, (5, 5, 5), 6]
我想实现这个用list理解。
numbers = [1, 2, 3, 3, 4, 5, 5, 5, 6]
it = itertools.groupby(numbers)
numbers = [tuple(group) if len(tuple(group)) > 1 else key for key, group in it]
结果我很期待:
[1, 2, (3, 3), 4, (5, 5, 5), 6]
结果我得到:
[1, 2,(), 4,(), 6]
插入的元组是空的,显然 - 但在同时他们不是,因为他们必须有不止一个元素才能插入到第一个位置。这是怎么回事?我是python的新手,甚至在耗尽了所有能够想到的关键字之后,我仍然无法在线找到类似的问题。我确定这很简单,我只是看不到它。任何帮助表示赞赏。
谢谢塔玛斯!我已经接受你的答案,因为你提供了一个解释,解决了我的问题。 –