logo

Python'da bir dizedeki iki karakter nasıl değiştirilir?

Bu yazıda, bir dizedeki iki karakterin nasıl değiştirileceğini tartışacağız. Bir dizedeki iki karakteri nasıl değiştirebileceğimizi anlamamıza yardımcı olacak çeşitli yaklaşımlar vardır.

Yaklaşım 1: list() ve join() Yöntemini Kullanma

Bir dizedeki iki karakteri değiştirmek istiyorsak, şunu kullanabiliriz: liste() Ve katılmak() yöntem.

Örnek:

javatable
 # 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) 

Çıktı:

 hewlo lorld 

Açıklama:

Yukarıdaki kodda öncelikle giriş dizesini şu şekilde tanımlıyoruz: 'Selam Dünya' . Bundan sonra, dizeyi kullanarak bir karakter listesine dönüştürürüz. liste() yöntem. Daha sonra kullanıyoruz demet paketini açma karakterleri değiştirmek için dizin 2 Ve dizin 6 listede. Son olarak listeyi kullanarak tekrar bir dizeye dönüştürüyoruz. katılmak() yöntemi kullanın ve yeni dizeyi çıkarın

Yaklaşım 2: Dilimleme ve birleştirmeyi kullanma

Bir dizedeki iki karakteri değiştirmek istiyorsak, şunu kullanabiliriz: dilimleme Ve birleştirme yöntem.

Örnek:

 # 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) 

Çıktı:

 hewlo lorld 

Açıklama:

Bu yaklaşımda kullandığımız dize dilimleme Ve birleştirme karakterleri değiştirmek için. İpi dört parçaya bölüyoruz: alt dize değiştirilecek ilk karakterden önce (dize[:2]) , değiştirilen ilk karakter (dize[6]) , değiştirilen karakterler arasındaki alt dize (dize[3:6]) , ikinci değiştirilen karakter (dize[2]) ve değiştirilen ikinci karakterden sonraki alt dize (dize[7:]) . Bundan sonra, yeni dizeyi oluşturmak için bu alt dizeleri istenen sırayla birleştiriyoruz.

Yaklaşım 3: Liste anlayışını kullanma

Bir dizedeki iki karakteri değiştirmek istiyorsak, şunu kullanabiliriz: liste anlama yöntem.

Örnek:

 # 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) 

Çıktı:

 hewlo lorld 

Açıklama:

Bu yaklaşımda, giriş dizesinin indeksleri üzerinde yinelenen bir liste anlayışını kullanarak bir karakter listesi oluştururuz. Karakterleri değiştirmek için liste kavramasında koşullu bir ifade kullanırız. dizin 2 Ve dizin 6 .

İfade dize[6 if i == 2 else 2] karakterini döndürür dizin 6 mevcut endeks ise 2 ve şuradaki karakteri döndürür: dizin 2 mevcut endeks ise 6 . Aksi halde geçerli dizindeki orijinal karakteri döndürür. Bundan sonra karakter listesini kullanarak tekrar bir dizeye dönüştürürüz. join() yöntemi ve yeni dizeyi çıktılayın.

Bu yaklaşım, yeni bir karakter listesi oluşturduğu için önceki yaklaşımlardan daha az verimli olabilir, ancak liste kavramanın kullanımının daha uygun veya sezgisel olduğu durumlarda yararlı olabilir.

Yaklaşım 4: 'bytearray' yerleşik türünü kullanma

Bir dizedeki iki karakteri değiştirmek istiyorsak, şunu kullanabiliriz: Bytearray yöntem.

Örnek:

 # 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) 

Çıktı:

 hewlo lorld 

Açıklama:

Bu yaklaşımda, öncelikle giriş dizesini bir değere dönüştürürüz. Bytearray kullanmak bytearray() yerleşik işlev. Bundan sonra şunu belirtiyoruz: 'utf-8' dizeyi bayta dönüştürmek için kodlamayı kullanırız ve ardından iki karakteri değiştiririz. dizin 2 Ve dizin 6 ilgili öğelere doğrudan erişerek Bytearray . Son olarak dönüştürüyoruz Bytearray kullanarak bir dizeye geri dönün kod çözme() yöntemini kullanın ve yeni dizenin çıktısını alın.

Bu yaklaşım etkilidir çünkü bir değiştirilebilir bytearray yeni bir dize veya liste oluşturmak yerine.