Hướng dẫn can you swap characters in a string in python? - bạn có thể hoán đổi các ký tự trong một chuỗi trong python không?

Tôi muốn trao đổi từng cặp ký tự trong một chuỗi.

>>> s = '2134'
>>> def swap[c, i, j]:
...  c = list[c]
...  c[i], c[j] = c[j], c[i]
...  return ''.join[c]
...
>>> swap[s, 0, 1]
'1234'
>>>
0 trở thành
>>> s = '2134'
>>> def swap[c, i, j]:
...  c = list[c]
...  c[i], c[j] = c[j], c[i]
...  return ''.join[c]
...
>>> swap[s, 0, 1]
'1234'
>>>
1,
>>> s = '2134'
>>> def swap[c, i, j]:
...  c = list[c]
...  c[i], c[j] = c[j], c[i]
...  return ''.join[c]
...
>>> swap[s, 0, 1]
'1234'
>>>
2 trở thành
>>> s = '2134'
>>> def swap[c, i, j]:
...  c = list[c]
...  c[i], c[j] = c[j], c[i]
...  return ''.join[c]
...
>>> swap[s, 0, 1]
'1234'
>>>
3.

Làm thế nào tôi có thể làm điều này trong Python?

hỏi ngày 5 tháng 1 năm 2011 lúc 14:57Jan 5, 2011 at 14:57

0

oneliner:

>>> s = 'badcfe'
>>> ''.join[[ s[x:x+2][::-1] for x in range[0, len[s], 2] ]]
'abcdef'
  • S [x: x+2] Trả về chuỗi chuỗi từ x đến x+2; Nó là an toàn cho len lẻ [s].
  • [::-1] đảo ngược chuỗi trong Python
  • Phạm vi [0, Len [s], 2] trả về 0, 2, 4, 6 ... trong khi x >> s = 'badcfe' >>> t = list[s] >>> t[::2], t[1::2] = t[1::2], t[::2] >>> ''.join[t] 'abcdef'

    Đã trả lời ngày 5 tháng 1 năm 2011 lúc 15:39Jan 5, 2011 at 15:39

    DuncanduncanDuncan

    88.7K11 Huy hiệu vàng117 Huy hiệu bạc155 Huy hiệu Đồng11 gold badges117 silver badges155 bronze badges

    1

    Đây là một cách ...

    >>> s = '2134'
    >>> def swap[c, i, j]:
    ...  c = list[c]
    ...  c[i], c[j] = c[j], c[i]
    ...  return ''.join[c]
    ...
    >>> swap[s, 0, 1]
    '1234'
    >>>
    

    Phân tử

    90,9K12 Huy hiệu vàng131 Huy hiệu bạc213 Huy hiệu đồng12 gold badges131 silver badges213 bronze badges

    Đã trả lời ngày 5 tháng 1 năm 2011 lúc 15:02Jan 5, 2011 at 15:02

    FoglebirdfoglebirdFogleBird

    71.9K25 Huy hiệu vàng122 Huy hiệu bạc131 Huy hiệu đồng25 gold badges122 silver badges131 bronze badges

    3

    ''.join[s[i+1]+s[i] for i in range[0, len[s], 2]] # 10.6 usec per loop
    

    hoặc

    ''.join[x+y for x, y in zip[s[1::2], s[::2]]] # 10.3 usec per loop
    

    hoặc nếu chuỗi có thể có độ dài lẻ:

    ''.join[x+y for x, y in itertools.izip_longest[s[1::2], s[::2], fillvalue='']]
    

    Lưu ý rằng điều này sẽ không hoạt động với các phiên bản Python cũ [nếu tôi không nhầm hơn 2,5].

    Điểm chuẩn được chạy trên Python-2.7-8.fc14.1.x86_64 và CPU Core 2 Duo 6400 với

    >>> s = '2134'
    >>> def swap[c, i, j]:
    ...  c = list[c]
    ...  c[i], c[j] = c[j], c[i]
    ...  return ''.join[c]
    ...
    >>> swap[s, 0, 1]
    '1234'
    >>>
    
    4.

    Đã trả lời ngày 5 tháng 1 năm 2011 lúc 15:40Jan 5, 2011 at 15:40

    Cristian Ciupitucristian CiupituCristian Ciupitu

    Huy hiệu vàng 19,6K77 gold badges50 silver badges73 bronze badges

    6

    Nếu hiệu suất hoặc thanh lịch không phải là một vấn đề và bạn chỉ muốn rõ ràng và hoàn thành công việc thì chỉ cần sử dụng điều này:

    def swap[text, ch2, ch2]:
        text = text.replace[ch2, '!',]
        text = text.replace[ch2, ch2]
        text = text.replace['!', ch2]
        return text
    

    Điều này cho phép bạn hoán đổi hoặc chỉ đơn giản là thay thế các ký tự hoặc con. Ví dụ: để hoán đổi 'ab' 'de' trong một văn bản:

    _str = "abcdefabcdefabcdef"
    print swap[_str, 'ab','de'] #decabfdecabfdecabf
    

    Đã trả lời ngày 21 tháng 10 năm 2012 lúc 7:19Oct 21, 2012 at 7:19

    1

    Vòng lặp dài của chuỗi bằng twos và hoán đổi:

    def oddswap[st]:
        s = list[st]
        for c in range[0,len[s],2]:
            t=s[c]
            s[c]=s[c+1]
            s[c+1]=t
    
        return "".join[s]
    

    giving:

    a, b = b, a
    
    0

    và thất bại trên các chuỗi có độ dài lẻ với ngoại lệ indexError.

    Đã trả lời ngày 5 tháng 1 năm 2011 lúc 15:31Jan 5, 2011 at 15:31

    SpacesManspacesmanSpacedman

    90,9K12 Huy hiệu vàng131 Huy hiệu bạc213 Huy hiệu đồng12 gold badges131 silver badges213 bronze badges

    Đã trả lời ngày 5 tháng 1 năm 2011 lúc 15:02

    a, b = b, a
    
    1

    FoglebirdfoglebirdNov 10, 2012 at 18:38

    71.9K25 Huy hiệu vàng122 Huy hiệu bạc131 Huy hiệu đồngcayhorstmann

    hoặc1 gold badge24 silver badges17 bronze badges

    1

    hoặc nếu chuỗi có thể có độ dài lẻ:

    a, b = b, a
    
    2

    Lưu ý rằng điều này sẽ không hoạt động với các phiên bản Python cũ [nếu tôi không nhầm hơn 2,5].

    a, b = b, a
    
    3

    Điểm chuẩn được chạy trên Python-2.7-8.fc14.1.x86_64 và CPU Core 2 Duo 6400 với

    >>> s = '2134'
    >>> def swap[c, i, j]:
    ...  c = list[c]
    ...  c[i], c[j] = c[j], c[i]
    ...  return ''.join[c]
    ...
    >>> swap[s, 0, 1]
    '1234'
    >>>
    
    4.

    Đã trả lời ngày 5 tháng 1 năm 2011 lúc 15:40Aug 16, 2019 at 1:11

    Cristian Ciupitucristian CiupituRobotbugs

    Huy hiệu vàng 19,6K73 gold badges22 silver badges30 bronze badges

    Nếu hiệu suất hoặc thanh lịch không phải là một vấn đề và bạn chỉ muốn rõ ràng và hoàn thành công việc thì chỉ cần sử dụng điều này:

    a, b = b, a
    
    4

    Điều này cho phép bạn hoán đổi hoặc chỉ đơn giản là thay thế các ký tự hoặc con. Ví dụ: để hoán đổi 'ab' 'de' trong một văn bản:

    Đã trả lời ngày 21 tháng 10 năm 2012 lúc 7:19Feb 14, 2021 at 9:29

    Vòng lặp dài của chuỗi bằng twos và hoán đổi:

    Sort:

    a, b = b, a
    
    5

    và thất bại trên các chuỗi có độ dài lẻ với ngoại lệ indexError.

    Đã trả lời ngày 5 tháng 1 năm 2011 lúc 15:31Jan 5, 2011 at 15:06

    SpacesManspacesmanSpacedman

    90,9K12 Huy hiệu vàng131 Huy hiệu bạc213 Huy hiệu đồng12 gold badges131 silver badges213 bronze badges

    3

    Đã trả lời ngày 5 tháng 1 năm 2011 lúc 15:02

    a, b = b, a
    
    6

    FoglebirdfoglebirdJan 5, 2011 at 15:42

    71.9K25 Huy hiệu vàng122 Huy hiệu bạc131 Huy hiệu đồngLennart Regebro

    hoặc41 gold badges221 silver badges251 bronze badges

    a, b = b, a
    
    7

    hoặc nếu chuỗi có thể có độ dài lẻ:

    a, b = b, a
    
    8

    Lưu ý rằng điều này sẽ không hoạt động với các phiên bản Python cũ [nếu tôi không nhầm hơn 2,5].Jan 5, 2011 at 18:23

    Điểm chuẩn được chạy trên Python-2.7-8.fc14.1.x86_64 và CPU Core 2 Duo 6400 với

    >>> s = '2134'
    >>> def swap[c, i, j]:
    ...  c = list[c]
    ...  c[i], c[j] = c[j], c[i]
    ...  return ''.join[c]
    ...
    >>> swap[s, 0, 1]
    '1234'
    >>>
    
    4.Kabie

    Đã trả lời ngày 5 tháng 1 năm 2011 lúc 15:401 gold badge36 silver badges44 bronze badges

    Cristian Ciupitucristian Ciupitu

    a, b = b, a
    
    9

    Huy hiệu vàng 19,6K7May 19, 2013 at 16:31

    Nếu hiệu suất hoặc thanh lịch không phải là một vấn đề và bạn chỉ muốn rõ ràng và hoàn thành công việc thì chỉ cần sử dụng điều này:dansalmo

    Điều này cho phép bạn hoán đổi hoặc chỉ đơn giản là thay thế các ký tự hoặc con. Ví dụ: để hoán đổi 'ab' 'de' trong một văn bản:5 gold badges56 silver badges51 bronze badges

    >>> s = 'badcfe'
    >>> t = list[s]
    >>> t[::2], t[1::2] = t[1::2], t[::2]
    >>> ''.join[t]
    'abcdef'
    
    0

    Đã trả lời ngày 21 tháng 10 năm 2012 lúc 7:19Oct 3, 2014 at 2:37

    Vòng lặp dài của chuỗi bằng twos và hoán đổi:JohnMudd

    và thất bại trên các chuỗi có độ dài lẻ với ngoại lệ indexError.2 gold badges26 silver badges24 bronze badges

    1

    >>> s = 'badcfe'
    >>> t = list[s]
    >>> t[::2], t[1::2] = t[1::2], t[::2]
    >>> ''.join[t]
    'abcdef'
    
    1

    Đã trả lời ngày 5 tháng 1 năm 2011 lúc 15:31

    SpacesManspacesman5 gold badges33 silver badges40 bronze badges

    Không cần phải lập một danh sách. Các tác phẩm sau đây cho các chuỗi có độ dài chẵn:Nov 13, 2015 at 8:20

    Đã trả lời ngày 10 tháng 11 năm 2012 lúc 18:38

    Cayhorstmanncayhorstmann

    >>> s = 'badcfe'
    >>> t = list[s]
    >>> t[::2], t[1::2] = t[1::2], t[::2]
    >>> ''.join[t]
    'abcdef'
    
    2

    3.0921 Huy hiệu vàng24 Huy hiệu bạc17 Huy hiệu đồng

    >>> s = 'badcfe'
    >>> t = list[s]
    >>> t[::2], t[1::2] = t[1::2], t[::2]
    >>> ''.join[t]
    'abcdef'
    
    3

    Một câu trả lời tổng quát hơn ... bạn có thể thực hiện bất kỳ hoán đổi cặp nào với các bộ dữ liệu hoặc chuỗi bằng cách sử dụng phương pháp này:

    >>> s = 'badcfe'
    >>> t = list[s]
    >>> t[::2], t[1::2] = t[1::2], t[::2]
    >>> ''.join[t]
    'abcdef'
    
    4

    Sau đó, bạn có thể gọi nó như thế này:

    >>> s = 'badcfe'
    >>> t = list[s]
    >>> t[::2], t[1::2] = t[1::2], t[::2]
    >>> ''.join[t]
    'abcdef'
    
    5

    Rất may, Python đưa ra các chuỗi trống hoặc bộ dữ liệu cho các trường hợp trong đó các chỉ số đề cập đến các lát không tồn tại.

    Đã trả lời ngày 16 tháng 8 năm 2019 lúc 1:11Jun 15, 2020 at 18:36

    RobotBugsrobotBugsMad Physicist

    4.2273 Huy hiệu vàng22 Huy hiệu bạc 30 Huy hiệu Đồng24 gold badges166 silver badges249 bronze badges

    Để hoán đổi các ký tự trong chuỗi A của vị trí L và r

    Nó chỉ đơn giản là lặp qua chuỗi [bất kỳ độ dài nào] bởi hai [bắt đầu từ 0 và tìm mỗi ký tự thứ hai] và sau đó tạo một chuỗi mới [hoán đổi_pair] bằng cách thêm chỉ mục hiện tại + 1 [ký tự thứ hai] và sau đó là chỉ mục thực tế [đầu tiên ký tự], ví dụ: chỉ mục 1 được đặt tại INDEX 0 và sau đó chỉ mục 0 được đặt tại INDEX 1 và điều này lặp lại thông qua lặp của chuỗi.

    Cũng được thêm mã để đảm bảo chuỗi có độ dài chẵn vì nó chỉ hoạt động cho độ dài chẵn.

    Drsanjay Bhakkad Post ở trên cũng là một bài tốt, hoạt động cho các chuỗi chẵn hoặc lẻ và về cơ bản đang thực hiện chức năng tương tự như dưới đây.

    >>> s = 'badcfe'
    >>> t = list[s]
    >>> t[::2], t[1::2] = t[1::2], t[::2]
    >>> ''.join[t]
    'abcdef'
    
    6

    Đã trả lời ngày 23 tháng 10 năm 2020 lúc 15:43Oct 23, 2020 at 15:43

    Một trong những cách dễ nhất để trao đổi hai ký tự đầu tiên từ một chuỗi là

    >>> s = 'badcfe'
    >>> t = list[s]
    >>> t[::2], t[1::2] = t[1::2], t[::2]
    >>> ''.join[t]
    'abcdef'
    
    7

    Đã trả lời ngày 23 tháng 6 năm 2020 lúc 12:41Jun 23, 2020 at 12:41

    >>> s = 'badcfe'
    >>> t = list[s]
    >>> t[::2], t[1::2] = t[1::2], t[::2]
    >>> ''.join[t]
    'abcdef'
    
    8

    Đã trả lời ngày 8 tháng 2 năm 2017 lúc 7:42Feb 8, 2017 at 7:42

    1

    >>> s = 'badcfe'
    >>> t = list[s]
    >>> t[::2], t[1::2] = t[1::2], t[::2]
    >>> ''.join[t]
    'abcdef'
    
    9

    Đã trả lời ngày 1 tháng 8 năm 2018 lúc 1:21Aug 1, 2018 at 1:21

    1

    Làm thế nào để bạn trao đổi các ký tự trong một chuỗi trong Python?

    Python..
    str1 = "tốt" ;.
    str2 = "buổi sáng" ;.
    in ["Chuỗi trước khi hoán đổi:" + str1 + "" + str2] ;.
    #Concatenate cả chuỗi str1 và str2 và lưu trữ nó trong str1 ..
    str1 = str1 + str2 ;.
    #Extract str2 từ str1 được cập nhật ..
    str2 = str1 [0: [len [str1] - len [str2]]] ;.
    #Extract str1 từ str1 đã cập nhật ..

    Bạn có thể trao đổi các ký tự trong một chuỗi không?

    Như chúng ta biết rằng đối tượng của chuỗi trong Java là bất biến [nghĩa là chúng ta không thể thực hiện bất kỳ thay đổi nào sau khi được tạo].Để thực hiện các sửa đổi trên chuỗi được lưu trữ trong một đối tượng chuỗi, chúng tôi sao chép nó vào một mảng ký tự, StringBuffer, v.v. và thực hiện các sửa đổi trên đối tượng sao chép.copy it to a character array, StringBuffer, etc and do modifications on the copy object.

    Bạn có thể thay thế các chữ cái trong một chuỗi python không?

    Phương thức python forth [] được sử dụng để tìm và thay thế các ký tự trong một chuỗi.Nó yêu cầu một chuỗi con phải được thông qua như một đối số;Các chức năng tìm thấy và thay thế nó.Phương thức thay thế [] thường được sử dụng trong làm sạch dữ liệu.. It requires a substring to be passed as an argument; the function finds and replaces it. The replace[] method is commonly used in data cleaning.

    Làm thế nào để bạn thay thế một nhân vật bằng một nhân vật khác trong Python?

    Cú pháp thay thế []..
    Cú pháp: String.replace [cũ, mới, đếm].
    Parameters:.
    Giá trị trả về: Nó trả về một bản sao của chuỗi trong đó tất cả các lần xuất hiện của một chuỗi con được thay thế bằng một chuỗi con khác ..

Bài Viết Liên Quan

Chủ Đề