gpt4 book ai didi

python - 如何从列表元素之间的差异中恢复原始数据

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

我正在尝试获取列表元素之间的差异。然后有了这个 difference_list 想把它拿回来。

data = [2,4,6,9]
string_diff = []

string = [data[0]]

def diff(x):
for i in range(len(x) - 1):
diff = x[i] - x[i+1]
string_diff.append(diff)
return string_diff
print diff(data)

输出是

[-2,-2,-3]

我创建了一个新字典“string”,它已经有了原始数据的第一个值。我的想法是创建一个列表,它通过循环迭代并并行更新,这样我就可以实现我想要的。但我收到错误“列表索引超出范围”

def recover(x):
for i in range(len(x)):
r = string[i] - x[i]
string.append(r)
return string

Traceback (most recent call last):
File "C:/Users/file.py", line 28, in <module>
print recover(string_diff)
File "C:/Users/file.py", line 23, in recover
r = string[i] - x[i]
IndexError: list index out of range

最佳答案

最简单的方法是 zip :

def diff(lst):
"""Return the differences between the items in lst."""
return [curr - prev for prev, curr in zip(lst, lst[1:])]

正在使用中:

>>> diff([2, 4, 6, 9])
[-2, -2, -3]

请注意,此函数仅使用其显式参数 lst,而不是像您当前的尝试那样依赖作用域来访问 string_diff。如果 lst 会很长,请考虑使用 itertools - izipislice 函数可用于避免构建一次列出所有内容。


你也可以recover只用明确的参数,通过传递start:

 def recover(diffs, start):
"""Recover the original list from start item and diffs."""
return [start - sum(diffs[:index]) for index in range(len(diffs) + 1)]

正在使用中:

>>> recover([-2, -2, -3], 2)
[2, 4, 6, 9]

关于python - 如何从列表元素之间的差异中恢复原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32700577/

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