PYPROGLIB Telegram 6828
🔁 Как перевернуть последовательность в 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
👍229❤‍🔥3



tgoop.com/pyproglib/6828
Create:
Last 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(...)).

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

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




Share with your friend now:
tgoop.com/pyproglib/6828

View MORE
Open in Telegram


Telegram News

Date: |

As of Thursday, the SUCK Channel had 34,146 subscribers, with only one message dated August 28, 2020. It was an announcement stating that police had removed all posts on the channel because its content “contravenes the laws of Hong Kong.” Just at this time, Bitcoin and the broader crypto market have dropped to new 2022 lows. The Bitcoin price has tanked 10 percent dropping to $20,000. On the other hand, the altcoin space is witnessing even more brutal correction. Bitcoin has dropped nearly 60 percent year-to-date and more than 70 percent since its all-time high in November 2021. 3How to create a Telegram channel? Members can post their voice notes of themselves screaming. Interestingly, the group doesn’t allow to post anything else which might lead to an instant ban. As of now, there are more than 330 members in the group. Telegram Android app: Open the chats list, click the menu icon and select “New Channel.”
from us


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