获取列表中连续数字之间的差异

获取列表中连续数字之间的差值

Get the difference between consecutive numbers in a list

要获得列表中连续数字之间的差异:

  1. 使用该enumerate()函数获取包含索引、项目元组的对象。
  2. 使用列表理解来迭代对象。
  3. 从第二项开始,从前一项中减去每一项。
主程序
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 处的列表项 -10

列表切片的语法是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等。

您选择哪种方法是个人喜好的问题。我会选择列表切片,因为我发现它比检查我们只在第一次迭代时关心的条件更直观。

# 额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: