Przejdź do głównej treści
eLearner.app
Moduł 4 · Lekcja 2 z 414/36 w kursie~10 min
Lekcje modułu (2/4)

Slicing i indeksowanie

W Pythonie ciągi znaków są sekwencjami znaków: możesz uzyskać dostęp do poszczególnych znaków za pomocą indeksu i wycinać podciągi przy użyciu składni slice [start:stop:step] — dokładnie tak samo jak w przypadku list.

Indeksy dodatnie i ujemne

Python
s = "Python"
#    0123456
#   -6-5-4-3-2-1
s[0]    # 'P'
s[5]    # 'n'
s[-1]   # 'n'   (ultimo)
s[-2]   # 'o'   (penultimo)

Próba dostępu do indeksu poza zakresem zgłasza błąd IndexError.

Slicing [start:stop:step]

Python
s = "Python"
s[0:3]    # 'Pyt'      indici 0,1,2 (stop ESCLUSO)
s[2:]     # 'thon'     dal 2 alla fine
s[:3]     # 'Pyt'      dall'inizio fino al 3 (escluso)
s[:]      # 'Python'   copia completa
s[-3:]    # 'hon'      ultimi 3
s[:-2]    # 'Pyth'     tutto tranne gli ultimi 2

W przeciwieństwie do indeksowania, slicing NIE zgłasza błędów, jeśli indeksy są poza zakresem: wycina to, co jest możliwe.

Trzeci argument: step

Python
s = "Python"
s[::2]    # 'Pto'    salta uno sì uno no
s[1::2]   # 'yhn'    dispari
s[::-1]   # 'nohtyP' INVERSIONE (idiom famoso)

s[::-1] to idiomatyczny sposób na odwrócenie ciągu znaków.

Długość i zawieranie się

Python
len("Python")        # 6
"th" in "Python"     # True
"java" in "Python"   # False

Ujemne indeksy i krok (step) w slicingu

La syntaxe complète du tranchage est s[start:stop:step]. Jeśli pominiesz start i stop, ale ustawisz ujemny step na -1 (s[::-1]), odwrócisz ciąg znaków. Ujemny indeks -1 zawsze reprezentuje ostatni znak ciągu, -2 przedostatni itd.

Spróbuj sam

Ćwiczenie#python.m4.l2.e1
Próby: 0Ładowanie...

Mając dane `word = 'PROGRAMMAZIONE'`, uzyskaj jego odwrócenie w zmiennej `reversed_word`. Oceń `reversed_word`.

Ładowanie edytora...
Pokaż wskazówkę

word[::-1]

Rozwiązanie dostępne po 3 próbach

Ćwiczenie powtórzeniowe

Ćwiczenie#python.m4.l2.e2
Próby: 0Ładowanie...

Mając dany `email = 'ada@example.com'`, wyodrębnij domenę (wszystko po '@') do zmiennej `domain` za pomocą slicingu po uprzednim znalezieniu indeksu za pomocą metody .find. Oceń `domain`.

Ładowanie edytora...
Pokaż wskazówkę

email[email.find('@') + 1:]

Rozwiązanie dostępne po 3 próbach

Dodatkowe wyzwanie

Ćwiczenie#python.m4.l2.e3
Próby: 0Ładowanie...

Mając dany ciąg znaków `word = "pythonista"`, użyj slicingu do wyodrębnienia pierwszych 3 znaków oraz ostatnich 3 znaków, a następnie połącz je w nowy ciąg `short_word`. Na koniec oceń `short_word` (powinno dać `'pytsta'`).

Ładowanie edytora...
Pokaż wskazówkę

Pierwsze 3 znaki to word[:3], ostatnie 3 to word[-3:]. Połącz oba wycinki.

Rozwiązanie dostępne po 3 próbach