我想在列表中标识连续数字组,以便:
myfunc([2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20])
Run Code Online (Sandbox Code Playgroud)
返回:
[(2,5), (12,17), 20]
Run Code Online (Sandbox Code Playgroud)
并且想知道最好的方法是什么(特别是如果在Python中有内置的东西).
编辑:注意我原本忘了提到个别数字应该作为单独的数字返回,而不是范围.
python中是否存在可以将增加的整数列表转换为范围列表的内容
例如,给定{0,1,2,3,4,7,8,9,11}我想得到{{0,4},{7,9},{11,11}}.
我可以写一个程序来做这个,但想知道python中是否有内置函数
我有一个整数列表,即:
values = [55, 55, 56, 57, 57, 57, 57, 62, 63, 64, 79, 80]
Run Code Online (Sandbox Code Playgroud)
我试图找到两个连续数字之间的最大差异.在这种情况下,从64-> 79将是15.数字可以是负数或正数,增加或减少或两者兼而有之.重要的是我需要找到两个连续数字之间的最大增量.
最快的方法是什么?这些列表可以包含数百到数千个整数.
编辑:这是我现在的代码:
prev_value = values[0]
largest_delta = 0
for value in values:
delta = value - prev_value
if delta > largest_delta:
largest_delta = delta
prev_value = value
return largest_delta
Run Code Online (Sandbox Code Playgroud)
有更快的方法吗?这需要一段时间.
我在列表中有一系列数字,我正在寻找一个优雅的解决方案,最好是列表理解,以获得单个序列(包括单个值).我已经解决了这个小问题,但它并不是非常pythonic.
以下列表定义了输入序列:
input = [1, 2, 3, 4, 8, 10, 11, 12, 17]
Run Code Online (Sandbox Code Playgroud)
期望的输出应该是:
output = [
[1, 2, 3, 4],
[8],
[10, 11, 12],
[17],
]
Run Code Online (Sandbox Code Playgroud) 我有一个整数列表......
[1,2,3,4,5,8,9,10,11,200,201,202]
Run Code Online (Sandbox Code Playgroud)
我想将它们分组到一个列表列表中,其中每个子列表包含其序列尚未被破坏的整数.像这样...
[[1,5],[8,11],[200,202]]
Run Code Online (Sandbox Code Playgroud)
我有一个相当笨重的工作......
lSequenceOfNum = [1,2,3,4,5,8,9,10,11,200,201,202]
lGrouped = []
start = 0
for x in range(0,len(lSequenceOfNum)):
if x != len(lSequenceOfNum)-1:
if(lSequenceOfNum[x+1] - lSequenceOfNum[x]) > 1:
lGrouped.append([lSequenceOfNum[start],lSequenceOfNum[x]])
start = x+1
else:
lGrouped.append([lSequenceOfNum[start],lSequenceOfNum[x]])
print lGrouped
Run Code Online (Sandbox Code Playgroud)
这是我能做的最好的事情.是否有更"pythonic"的方式来做到这一点?谢谢..