Python split String ด้วย empty delimeter ได้ไหม

ใน Python มีหลายวิธีในการ reverse string

วิธีที่นิยมที่สุด: Slicing

text = "Hello World"

reversed_text = text[::-1]

print(reversed_text)

ผลลัพธ์

dlroW olleH

อธิบาย [::-1]

รูปแบบคือ

string[start:end:step]

ดังนั้น

[::-1]

หมายถึง

  • start = ไม่ระบุ (เริ่มจากท้ายสุด)
  • end = ไม่ระบุ (ไปจนถึงต้นสุด)
  • step = -1 (เดินถอยหลังทีละ 1 ตัว)

ตัวอย่าง

text = "Python"

print(text[::-1])

ผลลัพธ์

nohtyP

ใช้ reversed()

text = "Python"

reversed_text = "".join(reversed(text))

print(reversed_text)

ผลลัพธ์

nohtyP

สังเกตว่า reversed() คืนค่าเป็น iterator จึงต้องใช้ join() รวมกลับเป็น string


Reverse รายการ (list)

numbers = [1, 2, 3, 4, 5]

print(numbers[::-1])

ผลลัพธ์

[5, 4, 3, 2, 1]

หรือแก้ไขตัวเดิมเลย

numbers.reverse()

print(numbers)

ตัวอย่างเจ๋ง ๆ: ตรวจสอบ Palindrome

word = "radar"

if word == word[::-1]:
print("Palindrome")
else:
print("Not Palindrome")

ผลลัพธ์

Palindrome

นี่เป็นเหตุผลหนึ่งที่ [::-1] ถูกใช้บ่อยมากใน Python เพราะสั้น อ่านง่าย และทำงานได้ทั้ง string, list, tuple และ sequence อื่น ๆ แทบทั้งหมดครับ 😊

แล้วอยากจะ split เป็น list ด้วย empty delimeter ได้ไหม

ถ้าหมายถึง "แยก string ออกเป็นตัวอักษรทีละตัว" หลายคนจะลองเขียนแบบนี้:

text = "Python"

text.split("")

แต่ ทำไม่ได้ครับ จะเกิด error:

ValueError: empty separator

เพราะ split() ต้องการ delimiter ที่มีความยาวอย่างน้อย 1 ตัวอักษร


วิธีที่ถูกต้อง

ใช้ list()

text = "Python"

chars = list(text)

print(chars)

ผลลัพธ์

['P', 'y', 't', 'h', 'o', 'n']

หรือใช้ unpacking

chars = [*text]

ผลลัพธ์เหมือนกัน

['P', 'y', 't', 'h', 'o', 'n']

ถ้าจะ reverse แล้วแปลงเป็น list

text = "Python"

chars = list(text[::-1])

print(chars)

ผลลัพธ์

['n', 'o', 'h', 't', 'y', 'P']

หรือ

chars = [*text[::-1]]

เกร็ดน่าสนใจคือ string ใน Python เป็น iterable อยู่แล้ว

for ch in "Python":
print(ch)

ดังนั้น list(text) จริง ๆ คือการดึงสมาชิกจาก iterable มาใส่ list นั่นเอง ซึ่งแนวคิดนี้ใช้ได้กับ tuple(), set(), dict() และ for loop ทั้งหมดครับ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

รับติดตั้งระบบป้ายโฆษณาดิจิตอล Digital Signage ตั้งเวลาทำงานและควบคุมผ่าน Internet ได้

แจกฟรี ระบบแสดงคิวงาน สำหรับร้านนวด สปา หรือ ร้านทำผม

บริการออกแบบ Character Agent สำหรับธุรกิจ

ป้ายดิจิตอลที่โต้ตอบได้