这给我带来了一段时间的麻烦,也许我的视野被挖了。给定一个整数列表,生成一个新列表,其中每个相邻的重复项组都已转换为一个元组。
例如,给定列表:[1, 2, 3, 3, 4, 5, 5, 5, 6]
生成的列表包含:[1, 2, (3, 3), 4, (5, 5, 5), 6]
我想用列表理解来实现这一点。
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新手,即使用尽了我能想到的所有关键字,我还是没能在网上找到类似的问题。我肯定是简单的东西,我只是看不见。感谢任何帮助。
问题是group变量是一个只能迭代一次的迭代器。筋疲力尽之后,它看起来是空的。您需要临时存储中间组。一种方法是按照itzmeontv的建议使用嵌套生成器/压缩,或者使用映射函数:
你可以试试这个
输出:
^{pr2}$如果您想
list comprehension
相关问题 更多 >
编程相关推荐