Odwróć ciąg znaków w Pythonie
Szukałem sposobu, aby wydrukować ciąg do tyłu, i po szybkim wyszukiwaniu w google znalazłem tę metodę:
Załóżmy, że' a ' jest zmienną łańcuchową. Zwróci to ciąg' a ' do tyłu:
a[::-1]
Czy ktoś może wyjaśnić jak to działa? 13 answers
Jasne, [::]
jest operatorem rozszerzonego plasterka . Pozwala na pobieranie podciągów. Zasadniczo działa poprzez określenie, które elementy chcesz jako [begin:end: step], i działa dla wszystkich sekwencji. Dwie fajne rzeczy:
- Można pominąć jeden lub więcej elementów i robi "właściwą rzecz"
- liczby ujemne dla początku, końca i kroku mają znaczenie
Dla początku i końca, jeśli podasz liczbę ujemną, oznacza to liczenie od koniec sekwencji. Na przykład, jeśli mam listę:
l = [1,2,3]
Wtedy l[-1]
jest 3, l[-2]
jest 2, a l[-3]
jest 1.
Dla argumentu step
liczba ujemna oznacza pracę wstecz przez sekwencję. Więc dla listy::
l = [1,2,3,4,5,6,7,8,9,10]
Możesz napisać l[::-1]
, co w zasadzie oznacza użycie rozmiaru kroku -1 podczas czytania listy. Python "zrobi dobrą rzecz" podczas wypełniania start i stop, więc iteracja przez Listę Wstecz i daje [10,9,8,7,6,5,4,3,2,1]
.
Podałem przykłady z listami, ale łańcuchy są tylko kolejną sekwencją i działają w ten sam sposób. Tak więc a[::-1]
oznacza budowanie ciągu znaków poprzez łączenie znaków, które otrzymujesz, przechodząc przez ciąg do tyłu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-13 10:17:56
Część "-1 "reprezentuje część" krok " wycinania-w tym przypadku przechodzi przez znak ciągu 1 na raz, ale wstecz(krok ujemny oznacza początek od końca łańcucha). Jeśli na przykład określisz krok jako 2, otrzymasz każdy inny znak łańcucha, zaczynając od pierwszego. Jeśli podasz krok -2, otrzymasz każdy inny znak łańcucha, zaczynając od ostatniego znaku i pracując wstecz.
Więc, w skrócie, jeśli a = '12345'
:
-
a[::2]
staje się135
-
a[::-1]
staje się54321
-
a[::-2]
staje się531
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-19 21:43:30
Myślę, że poniższy tekst ma nieco większy sens dla ciągów drukowanych w odwrotnej kolejności, ale może to tylko ja:
for char in reversed( myString ):
print( char, end = "" )
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-19 22:48:09
To zapis rozszerzonego fragmentu :
sequence[start:end:step]
W tym przypadku krok -1 oznacza wstecz, a pominięcie początku i końca oznacza, że chcesz cały ciąg.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-13 09:50:23
To się nazywa notacja Slice w Pythonie i możesz przeczytać więcej o tym, jak to działa tutaj:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:30
Używa rozszerzonego krojenia-ciąg znaków jest sekwencją w Pythonie i dzieli niektóre metody z innymi sekwencjami (mianowicie listami i krotkami). Do krojenia są trzy części-start, stop i step. Wszystkie z nich mają domyślne wartości-start domyślne 0, stop domyślne len (Sekwencja) i step domyślne 1. Określając [:: -1] mówisz " wszystkie elementy w sekwencji a, począwszy od początku, aż do końca, cofając się jeden po drugim.
Ta funkcja została wprowadzona w Pythonie 2.3.5, a więcej można przeczytać w What ' s New docs .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-19 21:43:36
[::-1] podaje wycinek ciągu znaków a. pełna składnia to a[begin:end:step]
co daje [begin], [begin+step],... a [koniec-1]. Gdy krok jest ujemny, zaczynasz od końca i przesuń, aby rozpocząć.
Na koniec, domyślnie begin to początek sekwencji, end to the end i krok do -1.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-19 21:44:01
Ciąg znaków jest zasadniczo sekwencją znaków, więc operacja krojenia działa na nim. To co robisz jest w rzeczywistości:
-> uzyskaj kawałek 'a' od początku do końca w krokach 1 do tyłu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-19 21:44:29
Zrobiłbym to tak:
variable = "string"
message = ""
for b in variable:
message = b+message
print (message)
I drukuje: gnirts
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-05 06:18:45
Jest to podstawowa notacja Krokowa, rozważ funkcjonalność:
A[2:4:2]
Dzieje się tak, że indeks jest przecięty pomiędzy pozycją 2 i 4, trzecia zmienna ustawia rozmiar kroku zaczynając od pierwszej wartości. W tym przypadku zwraca a [2], Ponieważ a[4] jest górną granicą, zwracane są tylko dwie wartości i nie ma drugiego kroku. Operator ( - ) minus po prostu odwraca wyjście kroku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-03 19:09:18
Rozważ poniższą listę
l=[12,23,345,456,67,7,945,467]
Kolejną sztuczką do odwrócenia listy może być:
l[len(l):-len(l)-1:-1] [467, 945, 7, 67, 456, 345, 23, 12]
l[:-len(l)-1:-1] [467, 945, 7, 67, 456, 345, 23, 12]
l[len(l)::-1] [467, 945, 7, 67, 456, 345, 23, 12]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-22 17:46:18
Możemy użyć append i pop, aby to zrobić
def rev(s):
i = list(s)
o = list()
while len(i) > 0:
o.append(t.pop())
return ''.join(o)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-26 03:39:09
Bez użycia odwróconego lub [:: -1], oto prosta wersja oparta na rekurencji, którą uznałbym za najbardziej czytelną:
def reverse(s):
if len(s)==2:
return s[-1] + s[0]
if len(s)==1:
return s[0]
return s[-1] + reverse(s[1:len(s)-1]) + s[0]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-29 03:20:59