【问题标题】:Best way to find previous and next elements in a list在列表中查找上一个和下一个元素的最佳方法
【发布时间】:2019-10-23 12:07:56
【问题描述】:

根据给定的元素索引查找前一个和下一个元素的有效方法是什么?

list = [(100, 112), (100, 100), (200, 100), (200, 125), (240, 130), (240, 100), (272, 100)]
idx = 2 # for example
print('Next elements are', list[idx + 1:] )

正确的输出

下一个元素是 [(200, 125), (240, 130), (240, 100), (272, 100)]

虽然这行打印了错误的元素:

print ('Prev elements are', list[idx - 1:])

输出错误

[(100, 100), (200, 100), (200, 125), (240, 130), (240, 100), (272, 100)]

为什么会这样?我也试过list[(idx-1)%len(list):]

【问题讨论】:

  • 你试过print ('Prev elements are', list[:idx])吗?注意标题: 没有尾随
  • 如果你想要下一个元素,为什么要减去 1?使用list[idx+1:]
  • 另外,不要调用你的对象list,因为这会践踏内置类型
  • 看看链接的答案。这将是了解切片的良好开端

标签: python list element items


【解决方案1】:

如果你有这样的数组:

arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

并定义索引:

index = 4

之前的元素:

print(arr[:index])
> [0, 1, 2, 3]

之后的元素:

print(arr[index+1:])
> [5, 6, 7, 8, 9]

PS:如果您的索引在range(0, len(arr)-2) 中,那么您将在元素之后获得,否则您将获得[]。

【讨论】:

    【解决方案2】:

    前面元素的正确表达式是

    print ('Prev elements are', list[:idx])

    另外,小注意,不要将列表命名为 list,因为 list 是 Python 中的保留名称,用作语言提供的 list 类型的名称!

    【讨论】:

    • 感谢您指出命名错误。实际名称不同。在编辑和简化问题时,我不小心将其命名为列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多