Hướng dẫn swap char in string python - hoán đổi char trong chuỗi python

29

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

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.4K10 Huy hiệu vàng117 Huy hiệu bạc155 Huy hiệu Đồng10 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.8K12 Huy hiệu vàng130 Huy hiệu bạc212 Huy hiệu đồng12 gold badges130 silver badges212 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.8K25 Huy hiệu vàng121 Huy hiệu bạc131 Huy hiệu đồng25 gold badges121 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,5K749 Huy hiệu bạc73 Huy hiệu đồng7 gold badges49 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.8K12 Huy hiệu vàng130 Huy hiệu bạc212 Huy hiệu đồng12 gold badges130 silver badges212 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.8K25 Huy hiệu vàng121 Huy hiệu bạc131 Huy hiệu đồngcayhorstmann

    hoặc1 gold badge23 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,5K749 Huy hiệu bạc73 Huy hiệu đồng3 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.8K12 Huy hiệu vàng130 Huy hiệu bạc212 Huy hiệu đồng12 gold badges130 silver badges212 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.8K25 Huy hiệu vàng121 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,5K749 Huy hiệu bạc73 Huy hiệu đồngMay 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 badges25 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.0821 Huy hiệu vàng23 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 badges165 silver badges248 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?

    Khoa học dữ liệu thực tế sử dụng Python..
    S: = Lập danh sách từ các ký tự của S ..
    Đối với I trong phạm vi 0 đến kích thước của S - 1, tăng thêm 2, làm. hoán đổi s [i], s [i+1] với s [i+1], s [i].
    Tham gia các ký tự từ S để tạo toàn bộ chuỗi và trả về ..

    Làm cách nào để trao đổi các ký tự trong một chuỗi?

    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.

    Chúng ta có thể hoán đổi chuỗi trong python không?

    Phương thức hoán đổi chuỗi python [] Phương thức hoán đổi [] Phương thức trả về một chuỗi trong đó tất cả các chữ cái trên là chữ thường và ngược lại. The swapcase[] method returns a string where all the upper case letters are lower case and vice versa.

    Làm thế nào để bạn đảo ngược hai ký tự trong một chuỗi python?

    Chức năng tích hợp [] được đảo ngược [] để tạo các chuỗi đảo ngược.Tuy nhiên, mục đích chính và trường hợp sử dụng của đảo ngược [] là để hỗ trợ lặp ngược lại trên các vòng lặp Python.Với một chuỗi là một đối số, đảo ngược [] trả về một trình lặp mang lại các ký tự từ chuỗi đầu vào theo thứ tự ngược lại. join[] to create reversed strings. However, the main intent and use case of reversed[] is to support reverse iteration on Python iterables. With a string as an argument, reversed[] returns an iterator that yields characters from the input string in reverse order.

Bài Viết Liên Quan

Chủ Đề