Jak reverzní řetězec pomocí seznamů v pythonu

0

Otázka

Tohle jsem našel kus kódu z související otázku o obrácení řetězce v pythonu, ale může mi někdo, prosím, interpretovat v jednoduché angličtině? Vezměte prosím na vědomí, že jsem stále nový python a jen naučil, jak používat while a funkce včera :/ takže nemohu opravdu dát to do slov sám, protože moje chápání, není tam ještě dost.

tak jako tak, tady je kód:

def reverse_string(string):
    new_strings = [] 
    index = len(string) 
    while index:  
        index -= 1                       
        new_strings.append(string[index]) 
    return ''.join(new_strings) 

print(reverse_string('hello'))
list python string
2021-11-24 04:07:22
3

Nejlepší odpověď

4

Jistě, věděl, co to dělá, můžete zjistit kód. V while smyčky, index hodnota začíná od konce řetězce a počítá až na 0. V každém kroku, a dodává, že postava (opět od konce), na konci seznamu je budova. Konečně, to v sobě spojuje seznamu do řetězce.

Takže, vzhledem k tomu, "abcd", seznam se postavil:

'abcd'  #3 -> ['d']
'abcd'  #2 -> ['d','c']
'abcd'  #1 -> ['d','c','b']
'abcd'  #0 -> ['d','c','b','a']
2021-11-24 04:10:52
1

No v podstatě, získat délku řetězce s len metoda. Které vás vrátí celočíselnou hodnotu, která představuje, jak dlouho se tento řetězec.

Oni pak použijte délku tohoto řetězce a efektivně opakovat dolů na nulu v while smyčky. Pomocí -= provozovatelem.

Každá iterace (to znamená pokaždé, když kolem smyčky), to bude trvat daleko od délky dokud nedosáhne nuly.

Tak umožňuje použití hello jako příklad vstupní a jít přes to společně.

reverse_string('hello') jak volat metodu, provedeno v print prohlášení vašeho kódu.

Pak jsme se vstoupit funkci a proveďte tyto kroky:

  1. Jsme vytvoření nové prázdné pole s názvem new_strings.
  2. Najdeme délka původního řetězce hello což nás vrací 5. To znamená, že nyní index je rovna 5.
  3. Jsme se vytvořit, zatímco smyčky, která stále dál, dokud index žádné další pomocí while(index): - while, stejně jako to léčí 0 hodnoty jako falsy a bude ukončena po dosažení této. Proto, když index je 0 smyčka se zastaví.
  4. První řádek této smyčky provádí index -= 1 což je stejné jako psaní index = index - 1 takže úplně první smyčku dostaneme index = 5 - 1 a teď index je rovna 4.
  5. Protože Python pak umožňuje nám přístup k character řetězec pomocí string[index] (a protože to funguje, od 0 -> n) provedení hello[4] ve skutečnosti nám charakter o.
  6. Jsme také přidat tuto postavu do pole new_strings to znamená, že jak jsme projít iterací k dosažení nuly, to bude přidat každý znak dozadu do tohoto pole nám dává ['o', 'l', 'l', 'e', 'h']
  7. Protože index je nyní žádné necháme smyčky a provést join provoz na pole, aby znovu vytvořit řetězec. Příkaz ''.join(new_strings) znamená, že si přejeme vstoupit do pole dříve jsme měli bez oddělovače. Pokud bychom měli udělat '#'.join(new_strings) my místo toho by se dostali o#l#l#e#h místo olleh.

Doufám, že tato odpověď vám dává určitou jasnost.

2021-11-24 04:20:49

aha to vysvětluje mé otázky, třeba na to, že poslední řádek, který jsem se chtěl zeptat. Díky za vysvětlení :)
user17415509

Žádné starosti vůbec. Jsem rád, že jsem mohl posloužit. Tim Roberts, je pravda; mnoho z těchto věcí lze chápat tím, že jde přes základy. Navrhuji, že vždy, když narazí na kód nerozumíte, zkuste vyhledávání jazykové dokumentace pro metodu/operátor. Dokonce i když nechcete pochopit, to v začátku, dostat se do zvyku a snaží se pochopit, to vám bude sloužit velmi dobře v pohybu vpřed.
Johan Jarvi

Jako příklad str.join() dokumentace , která je součástí Pythonu vestavěných typů dokumentace může ukázat být velmi užitečné, později ale chápu, jak to bude vypadat ohromující a matoucí, ale to je velmi dobré se dostat do zvyku nalezení těchto zdrojů a naučit se, jak je interpretovat.
Johan Jarvi
0

Jistě, je To velmi jednoduchý program. Měli byste reffer metody string a string indexování v pythonu se dostat jasnou představu. Dovolte mi vysvětlit to v deatial.

print(reverse_string ("ahoj"))//tisk funkce volá jinou funkci reverse_string a předávání argument"hello".

def reverse_string(string):// argument "hello" je uložen v proměnné řetězec v reverse_string funkce.

**new_strings = []** // created a new empty list
**index = len(string)** // len function returns the length of the argument 
                           passed to the function. len("hello")=5 and assigned 
                           to index. index=5.

zatímco index: // while exicute, dokud je podmínka false .V tomto například, když index =0.v řetězci indexování začít od 0 .Pro příklad. string[0]=h,string[1]=e,string[2]=l,string[3]=l,string[4]=o.

    **index -= 1**  //Note the last letter 'o' is in string[4] and the len 
                      function returned 5 so we need to decrement index variable 
                      to 4 so that it will pointing to string[4]=o                     
  

new_strings.append(string[index]) // append string[4], který je o a tak dále ... návrat ".join(new_strings)

2021-11-24 05:28:44

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................