Jak pokroić listę w Pythonie (indeksy, kroki i odwrócenie)

Dowiedz się, jak dzielić listy w Pythonie, korzystając z zaawansowanej składni nawiasów. Opanuj argumenty startu, stopu i kroku, indeksowanie ujemne i listy odwracania.

Wypróbuj to rozwiązanie w Edytorze

Przegląd

Krojenie to jedna z najbardziej intuicyjnych i potężnych funkcji języka Python, umożliwiająca wyodrębnianie podzbiorów listy, krotki lub ciągu znaków przy użyciu przejrzystej i zwięzłej składni. Zamiast pisać pełne pętle w celu skopiowania określonych elementów z listy, notacja plasterków w Pythonie pozwala określić zakres indeksów w nawiasach kwadratowych.

Pełna składnia dzielenia listy to `moja_lista[start:stop:krok]`. Indeks `start` ma charakter włączający, indeks `stop` ma charakter wyłączny, a `step` określa przyrost pomiędzy elementami (domyślnie 1). Jeśli pominiesz „start”, Python domyślnie ustawi się na początek listy. Jeśli pominiesz „stop”, Python domyślnie wyświetli koniec listy. Dzięki temu wyodrębnianie fragmentów kolekcji jest bardzo wyraziste.

Krojenie jest również niezwykle wszechstronne, ponieważ obsługuje indeksy ujemne. Ujemny indeks początkowy lub końcowy jest liczony wstecz od końca listy (gdzie „-1” oznacza ostatni element). Ustawiając ujemną wartość kroku, np. `moja_lista[::-1]`, możesz szybko pobrać odwróconą kopię listy. Zrozumienie zakresów wycinków jest niezbędne do czystej ekstrakcji danych.

Dane wyjściowe kodu i wykonania

Ten skrypt demonstruje dzielenie listy przy użyciu różnych punktów początkowych, końcowych, zakresów kroków, indeksowania ujemnego i odwracania listy.

list_slicing.py
Spróbuj w Edytorze
numbers = [0, 10, 20, 30, 40, 50, 60, 70, 80]

# 1. Basic slicing: elements from index 2 up to (but excluding) 6
subset = numbers[2:6]
print("Subset [2:6]:", subset)

# 2. Omitting indices: start to index 4, and index 5 to end
first_five = numbers[:5]
last_four = numbers[5:]
print("First five [:5]:", first_five)
print("Last four [5:]:", last_four)

# 3. Using a step parameter: get every second element
every_second = numbers[::2]
print("Every second [::2]:", every_second)

# 4. Negative indexing: get the last three elements
last_three = numbers[-3:]
print("Last three [-3:]:", last_three)

# 5. Reverse the list using step=-1
reversed_numbers = numbers[::-1]
print("Reversed list [::-1]:", reversed_numbers)
Wyjście terminala
Subset [2:6]: [20, 30, 40, 50]
First five [:5]: [0, 10, 20, 30, 40]
Last four [5:]: [50, 60, 70, 80]
Every second [::2]: [0, 20, 40, 60, 80]
Last three [-3:]: [60, 70, 80]
Reversed list [::-1]: [80, 70, 60, 50, 40, 30, 20, 10, 0]

Wdrażanie krok po kroku

  • Użyj listy[start:stop], aby wyodrębnić elementy z indeksu start do, ale nie włączając, stop.
  • Pomiń indeksy początkowe lub końcowe (np. lista[:4] lub lista[4:]), aby odciąć się od granicy listy.
  • Przekaż trzeci argument wewnątrz listy nawiasów[::step], aby pomijać elementy w regularnych odstępach czasu.
  • Użyj indeksów ujemnych, aby zliczyć elementy wstecz od końca kolekcji.

Często zadawane pytania

Czy krojenie modyfikuje oryginalną listę?

Nie, podział listy zwraca płytką kopię żądanego zakresu, pozostawiając oryginalną listę całkowicie niezmienioną.

Co się stanie, jeśli indeksy plasterków znajdą się poza dopuszczalnym zakresem?

W przeciwieństwie do uzyskiwania dostępu do pojedynczego indeksu, który wywołuje błąd IndexError, cięcie na kawałki wybacza błędy i po prostu ogranicza zakres na granicach listy, zwracając pustą listę, jeśli żaden element nie mieści się w zakresie.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.