获取列表中连续数字之间的差值
Get the difference between consecutive numbers in a list
要获得列表中连续数字之间的差异:
- 使用该
enumerate()
函数获取包含索引、项目元组的对象。 - 使用列表理解来迭代对象。
- 从第二项开始,从前一项中减去每一项。
主程序
my_list = [1, 3, 7, 14] result = [ item - my_list[idx - 1] for idx, item in enumerate(my_list) ][1:] print(result) # 👉️ [2, 4, 7]
enumerate函数接受一个可迭代对象并返回一个包含元组的枚举对象,其中第一个元素是索引,第二个是项目。
主程序
my_list = [1, 3, 7, 14] # 👇️ [(0, 1), (1, 3), (2, 7), (3, 14)] print(list(enumerate(my_list)))
每个元组中的第一项是索引,第二项是给定索引处的列表项。
我们使用
列表理解来迭代enumerate
对象。
主程序
my_list = [1, 3, 7, 14] result = [ item - my_list[idx - 1] for idx, item in enumerate(my_list) ][1:] print(result) # 👉️ [2, 4, 7]
列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。
在每次迭代中,我们从列表中的前一项中减去当前项并返回结果。
需要注意的重要一点是 – 我们使用
列表切片 [1:]
从结果中省略第一项。
这是必需的,因为我们不想从 index 处的列表项中减去 index 处的列表项。
-1
0
列表切片的语法是my_list[start:stop:step]
值start
是包含的,stop
值是排他的。
如果stop
省略该值,则切片将移至列表的末尾。
# if
获取带条件的连续数字之间的差值
或者,您可以检查 的值是否index
大于0
。
主程序
my_list = [1, 3, 7, 14] result = [ item - my_list[idx - 1] for idx, item in enumerate(my_list) if idx > 0 ] print(result) # 👉️ [2, 4, 7]
如果索引大于0
,我们知道我们不在第一次迭代中,可以安全地0
从 item 中减去 item1
等。
您选择哪种方法是个人喜好的问题。我会选择列表切片,因为我发现它比检查我们只在第一次迭代时关心的条件更直观。
# 额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: