คุณสามารถกลับสตริงใน Python ได้โดยใช้ slicing หรือเมธอด reversed() ฟังก์ชันเรียกซ้ำ (recursive function) ที่อ่านแต่ละอักขระในสตริงและกลับสตริงทั้งหมดเป็นอีกวิธีทั่วไปในการกลับสตริง ไม่มีฟังก์ชัน โดยเฉพาะ ที่ออกแบบมาเพื่อกลับสตริง
เมื่อคุณทำงานใน Python คุณอาจมีสตริงที่คุณต้องการกลับ ตัวอย่างเช่น สมมติว่าคุณกำลังสร้างเกม คุณอาจต้องการอนุญาตให้ผู้ใช้สร้างชื่อผู้ใช้โดยส่งชื่อของพวกเขาไปยังโปรแกรมและให้โปรแกรมกลับมัน
การกลับสตริงไม่ใช่การดำเนินการที่พบบ่อยในการเขียนโปรแกรม ดังนั้น Python จึงไม่มีฟังก์ชันในตัวสำหรับกลับสตริง อย่างไรก็ตาม การกลับสตริงเป็นหัวข้อที่มักขึ้นในสัมภาษณ์งาน และมีการประยุกต์ใช้จริงบางอย่าง
ในบทช่วยสอนนี้ เราจะอภิปรายสามวิธีที่คุณสามารถใช้เพื่อกลับสตริงใน Python เราจะเริ่มต้นด้วยการทบทวนสตริง Python ตามด้วยการตัด片สตริง (string slicing) จากนั้น เราจะสำรวจวิธีใช้ฟังก์ชัน reversed() และ join() สุดท้าย เราจะดูการเรียกซ้ำ (recursion)
วิธีกลับสตริงใน Python (How to Reverse a String in Python)
มีสามวิธีที่คุณสามารถใช้เพื่อกลับสตริง:
- การตัด片สตริงด้วยไวยากรณ์ [::-1]
- ใช้ฟังก์ชัน reversed() เพื่อสร้าง reverse iterator ที่อ่านสตริงและกลับเนื้อหาของมัน
- ใช้ฟังก์ชันเรียกซ้ำ (recursive function)
มาเจาะลึกทั้งสามวิธีนี้กัน
การกลับสตริง Python ด้วย Slicing
เมื่อคุณตัด片สตริง Python คุณสามารถใช้ลำดับการตัด片 [::-1] เพื่อสร้างสำเนาที่กลับกันของสตริง ไวยากรณ์นี้ดึงอักขระทั้งหมดในสตริงและกลับพวกมัน
สมมติว่าเรามีสตริงที่มีค่า "Python" เราต้องการเห็นสตริงนี้ในลำดับย้อนกลับ เราสามารถทำได้โดยใช้ไวยากรณ์ [::-1]:
string = "Python" reversed = string[::-1] print(reversed)
โค้ดของเราคืนค่า: nohtyP.
เราประกาศตัวแปร Python ชื่อ reverse ซึ่งจัดเก็บสตริงที่กลับแล้ว ไวยากรณ์ [::-1] ถูกเพิ่มที่ปลายของตัวแปรที่มีค่าสตริง "Python"
นี่เป็นวิธีที่มีประสิทธิภาพเพราะมันสั้นและเรียบง่าย คุณเพียงต้องเพิ่ม [::-1] ที่ปลายของสตริงเพื่อกลับมัน
วิธีนี้อาจดูสับสนเพราะไวยากรณ์ไม่ได้บ่งชี้ชัดเจนว่ามันสามารถใช้กลับสตริงได้ ดังนั้น นักพัฒนาหลายคนหลีกเลี่ยงการใช้เทคนิคนี้
กลับสตริง Python ด้วย reversed()
Python รวมฟังก์ชันในตัวที่ใช้สร้าง reverse iterator: ฟังก์ชัน reversed() ตัววนซ้ำย้อนกลับนี้ทำงานได้เพราะสตริงมีดัชนี ดังนั้นแต่ละค่าในสตริงจึงเข้าถึงได้อย่างแยกต่างหาก
ตัววนซ้ำย้อนกลับจากนั้นถูกใช้เพื่อวนซ้ำผ่านองค์ประกอบในสตริงในลำดับย้อนกลับ
นี่คือตัวอย่างที่ใช้ reversed() เพื่อสร้าง reverse iterator ที่พิมพ์สตริงของเราในลำดับย้อนกลับ:
for char in reversed("Python"):
print(char)
โค้ดของเราคืนค่า:
n o h t y P
ในโค้ดของเรา เราระบุลูป for ของ Python ที่วนซ้ำผ่านแต่ละรายการในเมธอด reversed() คุณเห็นได้ว่าโค้ดของเราได้พิมพ์สตริงของเราในลำดับย้อนกลับ
โค้ดของเราพิมพ์แต่ละอักขระบนบรรทัดใหม่ เนื่องจากเราใช้ reversed() กับลูป for หากเราต้องการให้สตริงของเราปรากฏบนบรรทัดเดียว เราจะต้องใช้ reversed() กับเมธอด join()
เราสามารถใช้เมธอด join() เพื่อรวมอักขระทั้งหมดจากตัววนซ้ำ reversed() ของเราเป็นสตริงเดียว
นี่คือตัวอย่างที่ใช้ reversed() และ join() เพื่อกลับสตริง Python:
"".join(reversed("Python"))
โค้ดของเราคืนค่า: nohtyP.
วิธีการกลับสตริงนี้มีประโยชน์เพราะเหมือนวิธีการตัด片ที่อภิปรายข้างต้น มันกระชับและกระชับ วิธีนี้มีประโยชน์เพิ่มเติมคืออ่านง่ายและเข้าใจง่าย แม้คุณจะไม่เคยเห็นเมธอด reversed() หรือ join() มาก่อน คุณก็จะเดาได้ว่ากำลังเกิดอะไรขึ้น
กลับสตริง Python: เรียกซ้ำ (Recursion)
การเรียกซ้ำ (Recursion) เป็นศัพท์ที่ใช้ในวิทยาการคอมพิวเตอร์เพื่ออธิบายฟังก์ชันที่เรียกตัวเอง โดยตรงหรือโดยอ้อม นี่คือตัวอย่างของการกลับสตริงผ่านการเรียกซ้ำของ Python:
def reverse_string(string):
if len(string) == 0:
return string
else:
return reverse_string(string[1:]) + string[0]
reverse_string("Python")
โค้ดของเราคืนค่า: nohtyP.
วิธีนี้ใช้การตัด片เพื่อกลับสตริงของเรา แทนที่จะใช้การดำเนินการตัด片ครั้งเดียวเหมือนที่เราทำก่อนหน้านี้ เราใช้ฟังก์ชัน Python ชื่อ reverse_string
ฟังก์ชันนี้ตัด片สตริงของเราและคืนค่ารุ่นที่กลับแล้ว วิธีนี้มีประสิทธิภาพมาก ดังนั้น นักพัฒนา Python หลายคนจึงชอบมัน
ฟังก์ชันของเรายอมรับสตริงที่เราต้องการกลับ หากไม่มีอักขระในสตริง ค่าของสตริงจะถูกคืนค่า มิฉะนั้น เราเรียกฟังก์ชันอีกครั้งโดยใช้ไวยากรณ์ string[1:] เป็นอาร์กิวเมนต์ เราเพิ่มอักขระแรกในสตริงของเราเข้าไปที่ปลายของสิ่งที่ฟังก์ชันนี้คืนค่า
สรุป
ในขณะที่ Python ไม่รวมฟังก์ชันกลับในตัว มีแนวทางไม่กี่อย่างที่เราสามารถใช้เพื่อกลับสตริง
เราสามารถใช้เมธอดการตัด片 [::-1] เพื่อกลับสตริงผ่านการตัด片 ฟังก์ชัน reversed() และ join() เพื่อกลับสตริงผ่านการวนซ้ำย้อนกลับ หรือการเรียกซ้ำเพื่อกลับสตริงโดยใช้ฟังก์ชันเรียกซ้ำ
ในบทช่วยสอนนี้ เราอภิปรายการใช้การตัด片 reversed() และ join() และการเรียกซ้ำเพื่อกลับสตริงใน Python เราสำรวจตัวอย่างของแต่ละเมธอดสตริงเหล่านี้ในการทำงาน
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ด Python โปรดอ่านคู่มือ How to Learn Python ที่ครอบคลุมของเรา