TG Telegram Group & Channel
Библиотека питониста | Python, Django, Flask | United States America (US)
Create: Update:

🔁 Как перевернуть последовательность в Python: срезы, .reverse() и reversed()

Иногда нужно пройтись по списку в обратном порядке. Python предлагает как минимум три способа сделать это. Разберём, чем они отличаются и когда что использовать.

1️⃣ Срез с шагом -1

Срезы в Python поддерживают формат [start:stop:step]. Если шаг отрицательный, список читается справа налево:

colors = ["purple", "blue", "green", "pink", "red"]
print(colors[::-1])
# ['red', 'pink', 'green', 'blue', 'purple']


Можно использовать это прямо в цикле:
for color in colors[::-1]:
print("I like", color)


Но есть нюанс: этот трюк работает только с последовательностями, то есть объектами, у которых есть индексация (списки, строки, кортежи).

2️⃣ Метод .reverse()

Метод .reverse() переворачивает список на месте, изменяя оригинальный объект:
colors = ["purple", "blue", "green", "pink", "red"]
colors.reverse()
print(colors)
# ['red', 'pink', 'green', 'blue', 'purple']


Важно:
— Метод не возвращает новый список, а изменяет оригинал.
— Работает только с типом list. Строки, кортежи и другие объекты не поддерживают .reverse().

3️⃣ Функция reversed()

Наиболее универсальный и «питоничный» способ — использовать встроенную функцию reversed():
colors = ["purple", "blue", "green", "pink", "red"]
for color in reversed(colors):
print("I like", color)


Плюсы reversed():
— Работает на любых обратимых итерируемых объектах, не только на списках.
— Не копирует список — возвращает итератор, который идёт с конца.
— Оригинальный объект не изменяется.

Можно использовать next() для получения элементов по одному:
r = reversed(colors)
next(r) # 'red'
next(r) # 'pink'


Даже со словарями

Словари в Python 3.7+ сохраняют порядок добавления. Значит, их можно тоже «перевернуть»:
capitals = {
"New South Wales": "Sydney",
"Victoria": "Melbourne",
"Western Australia": "Perth",
}

for state, capital in reversed(capitals.items()):
print(f"The capital of {state} is {capital}")


Как reversed() похож на другие помощники циклов:
enumerate() — добавляет индексацию
zip() — объединяет несколько последовательностей
reversed() — переворачивает порядок обхода

for i, color in enumerate(colors, 1):
print(f"{i}. {color}")


Что нельзя «перевернуть»

Не все объекты в Python можно перевернуть. Например, файлы и генераторы не поддерживают reversed(), потому что у них нет фиксированной длины и индексов.

Вывод

• Если нужно просто получить копию списка в обратном порядке — используйте colors[::-1].
• Если хотите перевернуть список на месте — метод .reverse().
• Если важно не трогать оригинал, сэкономить память и работать с любыми итерируемыми объектами — используйте reversed().


💬 Поделитесь в комментариях, каким способом чаще пользуетесь вы.
🔁 Репостните коллеге, который до сих пор пишет for i in range(len(...)).

Библиотека питониста #буст

🔁 Как перевернуть последовательность в Python: срезы, .reverse() и reversed()

Иногда нужно пройтись по списку в обратном порядке. Python предлагает как минимум три способа сделать это. Разберём, чем они отличаются и когда что использовать.

1️⃣ Срез с шагом -1

Срезы в Python поддерживают формат [start:stop:step]. Если шаг отрицательный, список читается справа налево:
colors = ["purple", "blue", "green", "pink", "red"]
print(colors[::-1])
# ['red', 'pink', 'green', 'blue', 'purple']


Можно использовать это прямо в цикле:
for color in colors[::-1]:
print("I like", color)


Но есть нюанс: этот трюк работает только с последовательностями, то есть объектами, у которых есть индексация (списки, строки, кортежи).

2️⃣ Метод .reverse()

Метод .reverse() переворачивает список на месте, изменяя оригинальный объект:
colors = ["purple", "blue", "green", "pink", "red"]
colors.reverse()
print(colors)
# ['red', 'pink', 'green', 'blue', 'purple']


Важно:
— Метод не возвращает новый список, а изменяет оригинал.
— Работает только с типом list. Строки, кортежи и другие объекты не поддерживают .reverse().

3️⃣ Функция reversed()

Наиболее универсальный и «питоничный» способ — использовать встроенную функцию reversed():
colors = ["purple", "blue", "green", "pink", "red"]
for color in reversed(colors):
print("I like", color)


Плюсы reversed():
— Работает на любых обратимых итерируемых объектах, не только на списках.
— Не копирует список — возвращает итератор, который идёт с конца.
— Оригинальный объект не изменяется.

Можно использовать next() для получения элементов по одному:
r = reversed(colors)
next(r) # 'red'
next(r) # 'pink'


Даже со словарями

Словари в Python 3.7+ сохраняют порядок добавления. Значит, их можно тоже «перевернуть»:
capitals = {
"New South Wales": "Sydney",
"Victoria": "Melbourne",
"Western Australia": "Perth",
}

for state, capital in reversed(capitals.items()):
print(f"The capital of {state} is {capital}")


Как reversed() похож на другие помощники циклов:
enumerate() — добавляет индексацию
zip() — объединяет несколько последовательностей
reversed() — переворачивает порядок обхода

for i, color in enumerate(colors, 1):
print(f"{i}. {color}")


Что нельзя «перевернуть»

Не все объекты в Python можно перевернуть. Например, файлы и генераторы не поддерживают reversed(), потому что у них нет фиксированной длины и индексов.

Вывод

• Если нужно просто получить копию списка в обратном порядке — используйте colors[::-1].
• Если хотите перевернуть список на месте — метод .reverse().
• Если важно не трогать оригинал, сэкономить память и работать с любыми итерируемыми объектами — используйте reversed().


💬 Поделитесь в комментариях, каким способом чаще пользуетесь вы.
🔁 Репостните коллеге, который до сих пор пишет for i in range(len(...)).

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM


>>Click here to continue<<

Библиотека питониста | Python, Django, Flask






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)