gpt4 book ai didi

python - 将 python 列表子集化为正/负运动/趋势

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:21 27 4
gpt4 key购买 nike

很抱歉提出这个问题,但我已经在这个问题上停留了一段时间。

基本上我正在尝试列出一个列表:

numbers=[1, 2, -1, -2, 4, 5]

并将此列表子集化为显示正/负运动(或趋势)的列表列表

最终的结果是:

subset_list = [[1, 2], [-1, -2], [4, 5]] 

基本上我一直在使用嵌套的while函数给子集追加正向移动,当条件不满足时,子集追加到subset_list,然后判断是否有负向移动。

我一直收到 IndexError,到目前为止 subset_list 只包含 [[1, 2]]

这是我的代码:

numbers = [1,2,-1,-2,4,5]

subset = []
subset_list = []
subset.append(numbers[0])

i = 1
while i < (len(numbers)):
if numbers[i] <= numbers[i+1]:
subset.append(numbers[i])
i+= 1
while subset[-1] <= numbers[i] or numbers[i] <= numbers[i+1]:
subset.append(numbers[i])
i += 1
subset_list.append(subset)
subset = []
i += 1
if numbers[i] > numbers[i+1]:
subset.append(numbers[i])
i+= 1
while subset[-1] <= numbers[i] or numbers[i] <= numbers[i+1]:
subset.append(numbers[i])
i+= 1
subset_list.append(subset)
subset = []
i += 1

谢谢!

- jack

最佳答案

这里有一个重写的方法:


numbers=[1,2,-1,-2,4,5]


direction = True # positive or negative
prevdirection = True
res = [[numbers[0]]]

for previtem, item in zip(numbers[:-1], numbers[1:]):
direction = True if item - previtem > 0 else False
if direction != prevdirection:
res.append([])
prevdirection = direction
res[-1].append(item)

print(res)

关于python - 将 python 列表子集化为正/负运动/趋势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39255870/

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