【问题标题】:Access two consecutive elements of a list in Python [duplicate]在Python中访问列表的两个连续元素[重复]
【发布时间】:2014-01-02 15:49:18
【问题描述】:

我需要访问列表的nn+1 元素。例如,如果我的列表是 [1,2,3,4,5] 而我的第 n 个元素是 2,我需要列表中的下一个元素 3

具体来说,我需要访问这些元素,以便使用它们在矩阵 A 中查找值

我有一个遍历列表的 for 循环:

list = [1,2,3,4,5]

for i in list:
  value = A[i,i+1] #access A[1,2], A[2,3], A[3,4], A[4,5]

问题在于我无法执行i+1 操作来访问列表中的n+1 元素。这是我第一次在 Python 中编程,我认为元素访问与 C/C++ 中的相同,但事实并非如此。任何帮助将不胜感激。

【问题讨论】:

  • 不相关:A[i,i+1] 不会在 C/C++ 中返回 i-th 和 i+1-th 元素(除非您在 C++ 中创建一个具有这种行为方式的类型,否则您可以这样做在 Python 中也是如此)。常见的解释,特别是如果A 是一个矩阵,是从i-th 行和i+1-th 列返回单个元素,例如,numpy 数组这样做。
  • 副本是关于非重叠块,而这是重叠的。

标签: python list iteration


【解决方案1】:

你可以像这样使用slicing operator

A = [1, 2, 3, 4, 5]
for i in range(len(A) - 1):
    value = A[i:i+2]

range 函数可让您迭代 len(A) - 1 次。

【讨论】:

  • 另一种方式是...A = [1, 2, 3, 4, 5]; print [(x,y)for x, y in zip(A[:-1], A[1:])]
  • 我们如何设置代码以使输出的格式为 [1,2]、[3,4]、[5,6]。 ....
【解决方案2】:

枚举可以让你访问每个项目的索引:

for i, _ in enumerate(A[:-1]):
    value = A[i:i+2]

如果您只需要成对的数据:

for value in zip(A, A[1:]):
    value

【讨论】:

    猜你喜欢
    • 2020-01-25
    • 2020-12-24
    • 2023-03-13
    • 2020-04-12
    • 2019-08-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多