วิธีการย้อนกลับสตริงใน Python (5 วิธี)

⚡ สรุปอย่างชาญฉลาด

Revการส่งสตริงใน Python ใช้เทคนิคที่ได้รับการพิสูจน์แล้วห้าอย่าง ได้แก่ ลูป for, ลูป while, สัญกรณ์ slice [::-1], ฟังก์ชัน reversed() และการเรียกซ้ำ Lessเนื้อหาครอบคลุมไวยากรณ์ ตัวอย่างโค้ด ผลลัพธ์ และเกณฑ์มาตรฐานประสิทธิภาพ

  • 🔁 สำหรับลูป: วนซ้ำและเชื่อมต่อตัวอักษรเข้าด้วยกัน
  • 🔂 ในขณะที่วนซ้ำ: ลดค่าดัชนีลงและเพิ่มอักขระเข้าไป
  • ⚡ การหั่น [::-1]: วิธีที่เร็วที่สุด เร็วกว่าการกลับลำดับรายการประมาณ 7 เท่า
  • 📦 reversed() + join: ตัววนซ้ำที่ประหยัดหน่วยความจำสำหรับสตริงขนาดใหญ่
  • 🔄 การเรียกซ้ำ: เรียกซ้ำบนสตริง[1:] จนกว่าจะว่างเปล่า
  • 🤖 การปรับปรุง AI: AI แปลงลูปให้เป็นการแบ่งส่วน

Reverse สตริงใน Python

สตริงคือรายการเรียงลำดับหรือลำดับของอักขระ สตริงเป็นหนึ่งในโครงสร้างข้อมูลที่มาพร้อมกับ Python- ขณะที่คุณกำลังทำงานกับสตริงเข้า Pythonคุณอาจต้องการให้ตัวละครทั้งหมดสลับกัน ตัวอย่างที่ดีคือเมื่อคุณกำลังสร้างเกมพาลินโดรม

สตริงที่กลับด้านจะมีอักขระตัวแรกเป็นอักขระตัวสุดท้ายและต่อไปเรื่อยๆ อย่างไรก็ตาม Python ไม่มีฟังก์ชันการย้อนสายในตัว แต่เป็นวิธีการที่คุณสามารถใช้ได้

ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีต่างๆ ในการย้อนกลับสตริงใน Python.

วิธีฮิต: Reverse สตริงใน Python โดยใช้ For Loop

วิธีแรกในการย้อนกลับสตริงคือการใช้ for loop ดังตัวอย่างโค้ดด้านล่าง:

Python Code:

# function for reversing a string
def reverse_string(string):
    # an empty string for storing reversed string
    reversed_string = ""
    # looping through the string
    for char in string:
        # reversing the string
        reversed_string = char + reversed_string
    # returning a reversed string
    return reversed_string

# the string to reverse
string = "Guru99"
# printing a message
print(f"String Reversal using a for loop")
# printing the original string
print(f"Original String: {string}")
# making a functional call inside a print function using an f-string
print(f"Reversed String: {reverse_string(string)}")

Output:

String Reversal using a for loop
Original String: Guru99
Reversed String: 99uruG

Code คำอธิบาย:

  • ในข้อมูลโค้ดนี้เราสามารถใช้ ย้อนกลับ_สตริง() ฟังก์ชั่นสำหรับการกลับรายการสตริงโดยรับค่าที่กำหนด เชือก เป็นอาร์กิวเมนต์
  • ภายในนั้น เราสามารถสร้างสตริงว่างเพื่อเก็บสตริงที่กลับด้าน จากนั้นเราก็จะ...ping ผ่านเส้นด้าย
  • อักขระจะกลับรายการและกำหนดให้ Reversed_string ตัวแปร
  • ในที่สุด บรรทัดสุดท้ายในฟังก์ชันจะส่งกลับสตริงที่กลับรายการ
  • ในการแสดงผลเอาต์พุตกำลังทำการเรียกใช้ฟังก์ชันภายใน พิมพ์() ทำงานด้วยความช่วยเหลือของ f-string

วิธีฮิต: Reverse สตริงใน Python โดยใช้ While Loop

การใช้บริการ ในขณะที่วนซ้ำ Python จะเป็นอีกวิธีหนึ่งในการย้อนกลับสตริง ให้เราเข้าใจข้อมูลโค้ดด้านล่าง:

Python Code:

# declaring a string to reverse
string = "Python"
# initializing an empty string to store the reversed string
reversed_string = ""
# printing a message
print(f"String Reversal using a while loop")
# printing the original string
print(f"Original String: {string}")
# find length of a string and store in count variable
count = len(string)
# a while loop for looping through the string characters
while count > 0:
    # save the value of str[count-1] in reversed_string
    reversed_string += string[count - 1]
    # decrementing index
    count = count - 1
print(f"Reversed String: {reversed_string}")

Output:

String Reversal using a while loop
Original String: Python
Reversed String: nohtyP

Code คำอธิบาย:

  • ในการนี​​้ Python รหัส เรากำลังประกาศสตริงที่จะย้อนกลับ จากนั้นเป็นสตริงว่างเพื่อเก็บสตริงที่ย้อนกลับ
  • จากนั้นเราจะค้นหาความยาวของสตริงที่กำหนดให้กับ นับ ตัวแปร
  • การขอ สตริง[นับ – 1] ในการวนซ้ำทุกครั้งจะดึงอักขระสตริงจากสุดท้ายไปตัวแรก
  • และเชื่อมโยงพวกมันเข้าด้วยกัน Reversed_string แล้วลดค่า นับ มูลค่า
  • ในที่สุด เรากำลังพิมพ์สตริงที่กลับด้าน

ห้องน้ำping ทำงานได้ แต่ Pythonตัวดำเนินการ slice ของเขานั้นกระชับกว่ามาก

วิธีฮิต: Python Reverse สตริงโดยใช้ Slicer OperaTor

อีกวิธีหนึ่งในการย้อนกลับสตริงคือการใช้ตัวดำเนินการสไลซ์ หากต้องการทำความเข้าใจ โปรดดูโค้ดด้านล่าง:

Python Code:

# function to reverse a string
def reverse(string):
    # the  slice syntax
    reversed_string = string[::-1]
    return reversed_string

# declaring a string to reverse
string = "Let's guru99"
# printing a message
print(f"String Reversal using Slicer Operator")
# printing the original string
print(f"Original String: {string}")
# making a functional call inside a print function using an f-string
print(f"Reversed String: {reverse(string)}")

Output:

String Reversal using Slicer Operator
Original String: Let's guru99
Reversed String: 99urug s'teL

Code คำอธิบาย:

  • เพื่อสร้าง ย้อนกลับ () ฟังก์ชั่นซึ่งใช้เวลา เชือก เป็นข้อโต้แย้งอยู่ข้างใน
  • ในตัวอย่างนี้ เรามี สตริง[::-1] ตัวดำเนินการสไลซ์สำหรับการย้อนกลับ เชือก
  • จากนั้นสตริงที่กลับรายการจะถูกกำหนดให้กับตัวแปรใหม่ที่เรียกว่า Reversed_string
  • ในที่สุด สตริงที่กลับรายการใหม่จะถูกส่งกลับ

วิธีฮิต: Revใส่สตริงเข้า Python โดยใช้ฟังก์ชัน reversed()

นอกจากนี้เรายังสามารถย้อนกลับสตริงโดยใช้ a ย้อนกลับ () Python ฟังก์ชั่นโค้ดจะมีลักษณะดังนี้:

Python Code ตัวอย่าง:

# function to reverse a string
def reverse(string):
    # reversed() function inside the join() function
    string = "".join(reversed(string))
    # returning the reversed string
    return string

# declaring a string to reverse
string = "guru99"
# printing a message
print(f"String Reversal using reversed() function")
# printing the original string
print(f"Original String: {string}")
# making a functional call inside a print function using an f-string
print(f"Reversed String: {reverse(string)}")

Output:

String Reversal using reversed() function
Original String: guru99
Reversed String: 99urug

Code คำอธิบาย:

  • ในโค้ดนี้เรามี ย้อนกลับ () ฟังก์ชันที่มีอาร์กิวเมนต์เป็น a เชือก.
  • ข้างในนั้นเราได้เตรียมใช้งานสตริงว่างแล้ว
  • เราเชื่อมมันเข้ากับผลลัพธ์ของ ย้อนกลับ (สตริง) โดยใช้โปรแกรม เข้าร่วม () ฟังก์ชัน
  • ข้างนอก ย้อนกลับ () ฟังก์ชั่น เราได้ประกาศสตริงที่จะกลับรายการ จากนั้นเราจะพิมพ์สตริงต้นฉบับและสตริงที่กลับรายการ

วิธีฮิต: Python Reverse สตริงโดยใช้การเรียกซ้ำ

การเรียกซ้ำหมายถึงฟังก์ชันที่กำหนดไว้เพื่อเรียกตัวเอง ฟังก์ชันแบบเรียกซ้ำจะเรียกว่าการเรียกซ้ำเมื่อเรียกตัวเอง เพื่อให้เข้าใจได้ดีขึ้น โปรดดูตัวอย่างโค้ดต่อไปนี้:

Python Code:

# a function to reverse a string
def reverse(string):
    # Checking the length of string
    if len(string) == 0:
        return string
    # reversing string if len(string) != 0
    else:
        # recursively calling the reverse() function
        return reverse(string[1:]) + string[0]

# declaring a string to reverse
string = "I love guru99"
# printing a message
print(f"String Reversal using Recursion")
# printing the original string
print(f"Original String: {string}")
# making a functional call inside a print function using an f-string
print(f"Reversed String: {reverse(string)}")

Output:

String Reversal using Recursion
Original String: I love guru99
Reversed String: 99urug evol I

Code คำอธิบาย:

  • ในโค้ดข้างต้นเราได้ประกาศก ย้อนกลับ () ฟังก์ชั่นที่รับ เชือก ในฐานะที่เป็นอาร์กิวเมนต์ เนื้อความของฟังก์ชันคือ an ถ้าเป็นอย่างอื่น คำแถลง
  • การขอ if คำสั่งตรวจสอบว่าความยาวของสตริงเท่ากับ 0 หรือไม่และส่งกลับสตริงในขณะที่ อื่น คำสั่งเรียก ย้อนกลับ () ฟังก์ชันแบบวนซ้ำ แบ่งดัชนีสุดท้ายของสตริง และเพิ่มไปที่จุดเริ่มต้น

คำถามที่พบบ่อย

การแบ่งส่วน [::-1] นั้นเร็วที่สุด ผลการทดสอบแสดงให้เห็นว่าเร็วกว่าการกลับลำดับรายการประมาณ 7 เท่า และเร็วกว่าการเรียกซ้ำถึง 83 เท่า

ใช่ AI แปลงการกลับทิศทางของลูป for เป็นการแบ่งส่วน และอธิบายความแตกต่างระหว่าง reversed() กับ [::-1]

เครื่องมือ AI เตือนว่าการใช้ += ในลูปนั้นมีประสิทธิภาพ O(n^2) และแนะนำให้ใช้ join หรือ slicing แทน

ตัววนซ้ำแบบขี้เกียจ ไม่ใช่สตริงใหม่ ใช้ ”.join(reversed(s)) เพื่อสร้างสตริงที่กลับด้านเมื่อจำเป็น

ไม่ค่อยเกิดขึ้นบ่อยนัก การเรียกซ้ำนั้นดูดีแต่ช้าและอาจเกิดข้อผิดพลาดได้ Pythonค่าเริ่มต้นของฟังก์ชันนี้จำกัดการเรียกซ้ำไว้ที่ 1000 เฟรมสำหรับสตริงยาว ควรใช้การแบ่งส่วน (slicing) ในโค้ดจริง

ไม่ สตริงไม่สามารถเปลี่ยนแปลงได้ใน Python; การกลับค่าจะส่งคืนสตริงใหม่ ตัวแปรเดิมจะยังคงมีค่าเดิม เว้นแต่จะมีการกำหนดค่าใหม่

ใช้ split, กลับลำดับรายการ แล้วรวมเข้าด้วยกัน: ' '.join(sentence.split()[::-1]) วิธีนี้จะกลับลำดับคำโดยคงการสะกดคำไว้

ไม่เสมอไป อีโมจิแบบผสมและการรวมตัวอักษรอาจแยกออกได้ หากต้องการการกลับตัวอักษรที่ปลอดภัย ให้ใช้ regex findall(r'\X', s) ก่อนทำการกลับตัวอักษร

สรุปโพสต์นี้ด้วย: