logo

Jak zaměnit dva znaky v řetězci v pythonu?

V tomto článku probereme, jak zaměnit dva znaky v řetězci. Existují různé přístupy, které nám pomohou pochopit, jak můžeme zaměnit dva znaky v řetězci.

Přístup 1: Použití metody list() a join().

Pokud chceme zaměnit dva znaky v řetězci, můžeme použít seznam() a připojit se() metoda.

Příklad:

formát řetězce v jazyce Java
 # Input string string = 'hello world' # Convert string to list of characters char_list = list(string) # Swap characters at index 2 and index 6 char_list[2], char_list[6] = char_list[6], char_list[2] # Convert list back to string new_string = ''.join(char_list) # Output new string print(new_string) 

Výstup:

 hewlo lorld 

Vysvětlení:

Ve výše uvedeném kódu nejprve definujeme vstupní řetězec jako 'Ahoj světe' . Poté převedeme řetězec na seznam znaků pomocí seznam() metoda. Dále použijeme rozbalení tuple k výměně postav index 2 a index 6 v seznamu. Nakonec seznam převedeme zpět na řetězec pomocí připojit se() metoda a výstup nového řetězce

Přístup 2: Použití krájení a zřetězení

Pokud chceme zaměnit dva znaky v řetězci, můžeme použít krájení a zřetězení metoda.

Příklad:

 # Input string string = 'hello world' # Swap characters at index 2 and index 6 new_string = string[:2] + string[6] + string[3:6] + string[2] + string[7:] # Output new string print(new_string) 

Výstup:

 hewlo lorld 

Vysvětlení:

V tomto přístupu používáme krájení provázku a zřetězení k výměně postav. Provázek nakrájíme na čtyři části: podřetězec před prvním znakem, který se má vyměnit (řetězec[:2]) , první prohozený znak (řetězec[6]) , podřetězec mezi prohozenými znaky (řetězec[3:6]) , druhá prohozená postava (řetězec[2]) a podřetězec za druhým prohozeným znakem (řetězec[7:]) . Poté tyto podřetězce zřetězíme v požadovaném pořadí a vytvoříme nový řetězec.

Přístup 3: Použití porozumění seznamu

Pokud chceme zaměnit dva znaky v řetězci, můžeme použít porozumění seznamu metoda.

Příklad:

 # Input string string = 'hello world' # Swap characters at index 2 and index 6 char_list = [string[i] if i not in (2, 6) else string[6 if i == 2 else 2] for i in range(len(string))] # Convert list back to string new_string = ''.join(char_list) # Output new string print(new_string) 

Výstup:

 hewlo lorld 

Vysvětlení:

V tomto přístupu vytváříme seznam znaků pomocí porozumění seznamu, který iteruje přes indexy vstupního řetězce. K záměně znaků používáme podmíněný výraz v rámci porozumění seznamu index 2 a index 6 .

Výraz string[6 if i == 2 else 2] vrátí znak at index 6 pokud je aktuální index 2 a vrátí znak at index 2 pokud je aktuální index 6 . Jinak vrátí původní znak na aktuálním indexu. Poté převedeme seznam znaků zpět na řetězec pomocí metoda join(). a vypíše nový řetězec.

Tento přístup může být méně účinný než předchozí přístupy, protože vytváří nový seznam znaků, ale může být užitečný v situacích, kdy je použití přehledu seznamu pohodlnější nebo intuitivnější.

Přístup 4: Použití vestavěného typu 'bytearray'

Pokud chceme zaměnit dva znaky v řetězci, můžeme použít byearray metoda.

Příklad:

 # Input string string = 'hello world' # Convert string to bytearray byte_array = bytearray(string, 'utf-8') # Swap characters at index 2 and index 6 byte_array[2], byte_array[6] = byte_array[6], byte_array[2] # Convert bytearray back to string new_string = byte_array.decode() # Output new string print(new_string) 

Výstup:

 hewlo lorld 

Vysvětlení:

V tomto přístupu nejprve převedeme vstupní řetězec na a byearray za použití byearray() vestavěná funkce. Poté upřesníme 'utf-8' kódování, aby se řetězec převedl na bajt, a pak prohodíme dva znaky na index 2 a index 6 přímým přístupem k odpovídajícím prvkům v byearray . Nakonec převedeme byearray zpět na řetězec pomocí dekódovat() metoda a výstup nového řetězce.

Tento přístup je efektivní, protože využívá a měnitelný bytearray místo vytváření nového řetězce nebo seznamu.