Лучший способ найти предыдущие и следующие элементы в списке - PullRequest
0 голосов
/ 23 октября 2019

Как эффективно найти предыдущие и следующие элементы на основе заданного индекса элемента?

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):]

Ответы [ 2 ]

4 голосов
/ 23 октября 2019

Если у вас есть такой массив:

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), то вы будете получать после элементов, в противном случае вы получите [].

1 голос
/ 24 октября 2019

Правильное выражение для предыдущих элементов будет

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

Кроме того, небольшая заметка, не называйте свои списки list, поскольку list является зарезервированным именем вPython, используемый в качестве имени предоставленного языка list type!

...