gpt4 book ai didi

python - Python 中的算术序列切片

转载 作者:行者123 更新时间:2023-12-01 04:38:42 24 4
gpt4 key购买 nike

我正在尝试编写一个函数,该函数接受整数列表并查找其中的所有算术序列。

A = [-1, 1, 3, 3, 3, 2, 1, 0]

此列表中有五个算术序列:(0, 2), (2,4), (4, 6), (4,7), (5,7) - 这些是序列的第一个和最后一个元素的索引。序列是由元素之间的差异得出的。

正如您从上面的示例中看到的 - 序列必须长于 2 个元素(否则它将在每两个元素之间找到一个序列)。

我需要编写的函数必须返回它在列表中找到的序列数 - 在本例中它应该返回 5。

我有点陷入困境 - 尝试了几种不同的方法但惨败。我最近做的事情是:

def solution(A):
slices = []
x = 0
listlen = len(A)
while x < listlen-1:
print ("Current x:", x)
difference = A[x+1] - A[x]
#print ("1st diff: ", A[x+1], ",", A[x], " = ", difference)
for y in range(x+1, len(A)-1):
difference_2 = A[y+1] - A[y]
#print ("Next Items: ", A[y+1], A[y])
#print ("2nd diff: ", difference_2)
if (difference == difference_2):
#print ("I'm in a sequence, first element at index", x)
else:
#print ("I'm leaving a sequence, last element at index ", y)
slice = str(x) + "," + str(y)
slices.append(slice)
x += 1
#print ("Changing X to find new slice: x:", x)
break
print (slices)

我在迭代 X 时搞砸了一些事情,此时,这是一个无限循环。

最佳答案

也许你可以使用这样的逻辑 -

>>> A = [-1, 1, 3, 3, 3, 2, 1, 0]
>>> def indices(l):
... res = []
... for i in range(0,len(l)-2):
... diff = l[i+1] - l[i]
... for j in range(i+2,len(l)):
... if (l[j] - l[j-1]) == diff:
... res.append((i,j))
... else:
... break;
... return res
...
>>> indices(A)
[(0, 2), (2, 4), (4, 6), (4, 7), (5, 7)]

关于python - Python 中的算术序列切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31229181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com