我想在排序列表中找到n个连续整数的序列并返回该序列.这是我能想到的最好的(对于n = 4),并且它不允许用户指定n.
my_list = [2,3,4,5,7,9]
for i in range(len(my_list)):
if my_list[i+1] == my_list[i]+1 and my_list[i+2] == my_list[i]+2 and my_list[i+3] == my_list[i]+3:
my_sequence = list(range(my_list[i],my_list[i]+4))
my_sequence = [2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
我刚刚意识到这段代码不起作用并返回"索引超出范围"错误,因此我将不得不弄乱for循环的范围.
这是一个简单的解决方案。它的效率并不高,但除非你有很长的列表,否则它会很好:
myarray = [2,5,1,7,3,8,1,2,3,4,5,7,4,9,1,2,3,5]
for idx, a in enumerate(myarray):
if myarray[idx:idx+4] == [a,a+1,a+2,a+3]:
print([a, a+1,a+2,a+3])
break
Run Code Online (Sandbox Code Playgroud)
一种简短而简洁的方法是,每次发现下一个整数是当前整数加 1 时,就用数字填充数组(直到数组中已经有 N 个连续数字),对于其他任何情况,我们可以清空数组:
arr = [4,3,1,2,3,4,5,7,5,3,2,4]
N = 4
newarr = []
for i in range(len(arr)-1):
if(arr[i]+1 == arr[i+1]):
newarr += [arr[i]]
if(len(newarr) == N):
break
else:
newarr = []
Run Code Online (Sandbox Code Playgroud)
当代码运行时,newarr 将是:
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1283 次 |
| 最近记录: |