@roman01

Как получить срез списка в обратном порядке?

Добрый день, коллеги!

Прошу помощи в следующем вопросе (как оказалось, я плохо понимаю как работают срезы).

Итак, есть список:
a = [1,2,3,4,5,6,7]

Мне нужно получить следующий результат (срезы):
[7,6]
[6,5]
[5,4]
[4,3]
[3,2]
[2,1]

Написал код:
a = [1,2,3,4,5,6,7]
print(a)
count=0
for i in range(len(a)-1,-1,-1):
    if (count>1):
        b = a[i+2:i:-1]
        print(b)
    count+=1


Последнего (первого из исходного списка) среза нет
Вывод:
[7, 6]
[6, 5]
[5, 4]
[4, 3]
[3, 2]

Прошу прощения за такие вопросы... но вот что-то не выходит каменный цветок :)

С уважением, Роман
  • Вопрос задан
  • 171 просмотр
Решения вопроса 3
@deliro
Агрессивное программирование
Правильный и более простой вариант (хоть и без срезов):

from itertools import tee

a = [1, 2, 3, 4, 5, 6, 7]
x, y = tee(reversed(a))
next(y)

for i, j in zip(x, y):
    print([i, j])
Ответ написан
netpastor
@netpastor
Python developer
a = [1,2,3,4,5,6,7]
a.reverse()
for i in range(len(a)-1):
    print([a[i], a[i+1]])


Сори, да, была ошибка
Ответ написан
a = [1,2,3,4,5,6,7]
for i in range(len(a)-1,0,-1):
	b = a[i-1:i+1]
	b.reverse()
	print(b)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы