【发布时间】:2016-08-03 10:03:05
【问题描述】:
我有一个包含随机整数的列表。 我想遍历这个列表,如果一个数字和后续数字在一个数字步长内,我想将它们连接到一个子列表中。
例如:
input = [1,2,4,6,7,8,10,11]
output = [[1,2],[4],[6,7,8],[10,11]]
输入列表将始终包含按升序排序的正整数。 我尝试了here的一些代码。
initerator = iter(inputList)
outputList = [c + next(initerator, "") for c in initerator]
虽然我可以连接列表中的每两个条目,但我似乎无法在列表理解中添加合适的if。
Python 版本 = 3.4
【问题讨论】:
-
单线:
[[x for i, x in grp] for _, grp in itertools.groupby(enumerate(inputList), lambda x: x[1] - x[0])]. -
谢谢,这看起来不错......而且我有点理解工作原理......但是如果我在每个条目前加上一个字母,所以我有输入 = [ a1,a2,a4,b6,c7,c8,c10,d11],我也想按字符分组,得到 [[a1,a2],[a4],[b6],[c7,c8],[c10 ],[d11]]....我不完全理解“groupby”和“enumerate”方法,这可能就是为什么我不能得到这个...再次感谢
标签: python list python-3.x list-comprehension listiterator