Python список сплайсинга не включает первый элемент при работе в обратном направлении - PullRequest
0 голосов
/ 28 января 2020
new_list = [i + 1 for i in range(16)]

sec_list = new_list[(len(new_list) - 2):0:-2]

print(new_list)

print(sec_list)

Фактический вывод

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]

[15, 13, 11, 9, 7, 5, 3]

Желаемый вывод:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]

[15, 13, 11, 9, 7, 5, 3, 1] <---- I want the 1 to be present

Просто хочу уточнить, как это работает. Я думал [начало: конец: увеличение / уменьшение]

1 Ответ

1 голос
/ 28 января 2020

Это то, что вам нужно

sec_list = new_list[(len(new_list) - 2)::-2]
print(sec_list) # [15, 13, 11, 9, 7, 5, 3, 1]

Вы допустили ошибку во втором аргументе:

new_list[(len(new_list) - 2):0:-2]

start: (len(new_list) - 2) stop: 0 step: -2

, что означает, что вы остановились на 0 элементе, поэтому 1 не был включен

, также вы можете прочитать об этом там

...