Hướng dẫn how do i reverse a string order in python? - làm cách nào để đảo ngược thứ tự chuỗi trong python?


Tìm hiểu làm thế nào để đảo ngược một chuỗi trong Python.


Không có chức năng tích hợp để đảo ngược một chuỗi trong Python.

Cách nhanh nhất (và dễ nhất?) Là sử dụng một lát cắt lùi, -1.

Thí dụ

Đảo ngược chuỗi "Hello World":

txt = "Hello World" [::-1] in (txt)
print(txt)

Hãy tự mình thử »

Ví dụ giải thích

Chúng tôi có một chuỗi, "Hello World", mà chúng tôi muốn đảo ngược:

Chuỗi để đảo ngược

txt = "Hello World" [::-1] in (txt)"Hello World"[::-1]
print(txt)

Tạo một lát bắt đầu ở cuối chuỗi và di chuyển về phía sau.

Trong ví dụ cụ thể này, câu lệnh SLICE [::-1] có nghĩa là bắt đầu ở cuối chuỗi và kết thúc ở vị trí 0, di chuyển với bước -1, tiêu cực, có nghĩa là một bước lùi.

Lát chuỗi

txt = "Hello World" [::-1] in (txt)[::-1]
print(txt)

Tạo một lát bắt đầu ở cuối chuỗi và di chuyển về phía sau.

Trong ví dụ cụ thể này, câu lệnh SLICE [::-1] có nghĩa là bắt đầu ở cuối chuỗi và kết thúc ở vị trí 0, di chuyển với bước -1, tiêu cực, có nghĩa là một bước lùi.

Lát chuỗi

Bây giờ chúng ta có một chuỗi

list_comprehension  : min:   4.2μs, mean:   4.5μs, max:   31.7μs
reverse_func        : min:  75.4μs, mean:  76.6μs, max:  109.5μs
reverse_reduce      : min: 749.2μs, mean: 882.4μs, max: 2310.4μs
reverse_loop        : min: 469.7μs, mean: 577.2μs, max: 1227.6μs
1 có nội dung "Xin chào thế giới" ngược.
print(txt)



In chuỗi để chứng minh kết quả

In danh sách

Thí dụ

Đảo ngược chuỗi "Hello World":
  return x[::-1]

txt = "Hello World" [::-1] in (txt)

Hãy tự mình thử »

Hãy tự mình thử »

Ví dụ giải thích

Chúng tôi có một chuỗi, "Hello World", mà chúng tôi muốn đảo ngược:

In chuỗi để chứng minh kết quả

In danh sách
  return x[::-1]

txt = "Hello World" [::-1] in (txt)

Hãy tự mình thử »

Ví dụ giải thích

Lát chuỗi

In danh sách
  return x
[::-1]

txt = "Hello World" [::-1] in (txt)

Hãy tự mình thử »

Ví dụ giải thích

Chúng tôi có một chuỗi, "Hello World", mà chúng tôi muốn đảo ngược:

In danh sách
 
return x[::-1]

txt = "Hello World" [::-1] in (txt)

Hãy tự mình thử »

Ví dụ giải thích

Chúng tôi có một chuỗi, "Hello World", mà chúng tôi muốn đảo ngược:

Chuỗi để đảo ngược
  return x[::-1]
mytxt = my_function("I wonder how this text looks like backwards")print(mytxt)

txt = "Hello World" [::-1] in (txt)

Tạo một lát bắt đầu ở cuối chuỗi và di chuyển về phía sau.

In danh sách
  return x[::-1]

txt = "Hello World" [::-1] in (txt)

print(mytxt)



Câu trả lời này dài hơn một chút và chứa 3 phần: điểm chuẩn của các giải pháp hiện có, tại sao hầu hết các giải pháp ở đây đều sai, giải pháp của tôi.Benchmarks of existing solutions, why most solutions here are wrong, my solution.

Các câu trả lời hiện có chỉ chính xác nếu các bộ điều chỉnh / cụm đồ họa Unicode bị bỏ qua. Tôi sẽ giải quyết điều đó sau, nhưng trước tiên hãy xem xét tốc độ của một số thuật toán đảo ngược:

Hướng dẫn how do i reverse a string order in python? - làm cách nào để đảo ngược thứ tự chuỗi trong python?

list_comprehension  : min:   0.6μs, mean:   0.6μs, max:    2.2μs
reverse_func        : min:   1.9μs, mean:   2.0μs, max:    7.9μs
reverse_reduce      : min:   5.7μs, mean:   5.9μs, max:   10.2μs
reverse_loop        : min:   3.0μs, mean:   3.1μs, max:    6.8μs

Hướng dẫn how do i reverse a string order in python? - làm cách nào để đảo ngược thứ tự chuỗi trong python?

list_comprehension  : min:   4.2μs, mean:   4.5μs, max:   31.7μs
reverse_func        : min:  75.4μs, mean:  76.6μs, max:  109.5μs
reverse_reduce      : min: 749.2μs, mean: 882.4μs, max: 2310.4μs
reverse_loop        : min: 469.7μs, mean: 577.2μs, max: 1227.6μs

Bạn có thể thấy rằng thời gian để hiểu danh sách (

list_comprehension  : min:   4.2μs, mean:   4.5μs, max:   31.7μs
reverse_func        : min:  75.4μs, mean:  76.6μs, max:  109.5μs
reverse_reduce      : min: 749.2μs, mean: 882.4μs, max: 2310.4μs
reverse_loop        : min: 469.7μs, mean: 577.2μs, max: 1227.6μs
2) trong mọi trường hợp cho đến nay thấp nhất (ngay cả sau khi sửa lỗi đánh máy của tôi).

Chuỗi đảo ngược

Nếu bạn thực sự muốn đảo ngược một chuỗi theo lẽ thường, nó sẽ phức tạp hơn. Ví dụ, lấy chuỗi sau (ngón tay màu nâu chỉ bên trái, ngón tay màu vàng chỉ lên). Đó là hai biểu đồ, nhưng 3 điểm mã Unicode. Một cái bổ sung là một công cụ sửa đổi da.

example = "👈🏾👆"

Nhưng nếu bạn đảo ngược nó với bất kỳ phương pháp đã cho, bạn có được ngón tay màu nâu hướng lên, ngón tay màu vàng hướng sang trái. Lý do cho điều này là công cụ sửa đổi màu "nâu" vẫn ở giữa và được áp dụng cho bất cứ điều gì trước đó. Vì vậy chúng tôi có

  • U: ngón tay chỉ lên
  • M: Công cụ sửa đổi màu nâu
  • L: ngón tay chỉ trái

original: LMU                    👈🏾👆
reversed: UML (above solutions)  ☝🏾👈
reversed: ULM (correct reversal) 👆👈🏾

Các cụm đồ họa Unicode phức tạp hơn một chút so với chỉ các điểm mã sửa đổi. May mắn thay, có một thư viện để xử lý đồ thị:

>>> import grapheme
>>> g = grapheme.graphemes("👈🏾👆")
>>> list(g)
['👈🏾', '👆']

và do đó câu trả lời đúng sẽ là

def reverse_graphemes(string):
    g = list(grapheme.graphemes(string))
    return ''.join(g[::-1])

đó cũng là chậm nhất:

list_comprehension  : min:    0.5μs, mean:    0.5μs, max:    2.1μs
reverse_func        : min:   68.9μs, mean:   70.3μs, max:  111.4μs
reverse_reduce      : min:  742.7μs, mean:  810.1μs, max: 1821.9μs
reverse_loop        : min:  513.7μs, mean:  552.6μs, max: 1125.8μs
reverse_graphemes   : min: 3882.4μs, mean: 4130.9μs, max: 6416.2μs

Mật mã

#!/usr/bin/env python

import numpy as np
import random
import timeit
from functools import reduce
random.seed(0)


def main():
    longstring = ''.join(random.choices("ABCDEFGHIJKLM", k=2000))
    functions = [(list_comprehension, 'list_comprehension', longstring),
                 (reverse_func, 'reverse_func', longstring),
                 (reverse_reduce, 'reverse_reduce', longstring),
                 (reverse_loop, 'reverse_loop', longstring)
                 ]
    duration_list = {}
    for func, name, params in functions:
        durations = timeit.repeat(lambda: func(params), repeat=100, number=3)
        duration_list[name] = list(np.array(durations) * 1000)
        print('{func:<20}: '
              'min: {min:5.1f}μs, mean: {mean:5.1f}μs, max: {max:6.1f}μs'
              .format(func=name,
                      min=min(durations) * 10**6,
                      mean=np.mean(durations) * 10**6,
                      max=max(durations) * 10**6,
                      ))
        create_boxplot('Reversing a string of length {}'.format(len(longstring)),
                       duration_list)


def list_comprehension(string):
    return string[::-1]


def reverse_func(string):
    return ''.join(reversed(string))


def reverse_reduce(string):
    return reduce(lambda x, y: y + x, string)


def reverse_loop(string):
    reversed_str = ""
    for i in string:
        reversed_str = i + reversed_str
    return reversed_str


def create_boxplot(title, duration_list, showfliers=False):
    import seaborn as sns
    import matplotlib.pyplot as plt
    import operator
    plt.figure(num=None, figsize=(8, 4), dpi=300,
               facecolor='w', edgecolor='k')
    sns.set(style="whitegrid")
    sorted_keys, sorted_vals = zip(*sorted(duration_list.items(),
                                           key=operator.itemgetter(1)))
    flierprops = dict(markerfacecolor='0.75', markersize=1,
                      linestyle='none')
    ax = sns.boxplot(data=sorted_vals, width=.3, orient='h',
                     flierprops=flierprops,
                     showfliers=showfliers)
    ax.set(xlabel="Time in ms", ylabel="")
    plt.yticks(plt.yticks()[0], sorted_keys)
    ax.set_title(title)
    plt.tight_layout()
    plt.savefig("output-string.png")


if __name__ == '__main__':
    main()

Làm thế nào để bạn đảo ngược thứ tự của các từ trong một chuỗi trong python?

Đưa ra dưới đây là các bước cần tuân thủ để giải quyết vấn đề này ...
Tách từng từ trong một chuỗi đã cho bằng phương thức Split () của loại dữ liệu chuỗi trong Python ..
Đảo ngược danh sách phân tách từ ..
In các từ của danh sách, ở dạng chuỗi sau khi tham gia từng từ với không gian bằng cách sử dụng.tham gia () phương thức trong python ..

Làm thế nào để tôi đảo ngược thứ tự của chuỗi?

Một số cách phổ biến để đảo ngược một chuỗi là:..
Sử dụng cắt để tạo một bản sao ngược của chuỗi ..
Sử dụng cho vòng lặp và nối lại các ký tự theo thứ tự ngược lại ..
Sử dụng trong khi lặp để lặp lại các ký tự chuỗi theo thứ tự ngược lại và nối chúng ..
Sử dụng hàm nối chuỗi () với trình lặp đảo ngược () ..

Làm thế nào để bạn đảo ngược thứ tự của một chuỗi trong Python?

Python đảo ngược hàm () Hàm python đảo ngược () Phương thức trả về một trình lặp truy cập vào chuỗi đã cho theo thứ tự ngược lại. Python reversed() method returns an iterator that accesses the given sequence in the reverse order.