วันศุกร์ที่ 8 มกราคม พ.ศ. 2553

Python list to string on comma ','

ตอนนี้กระผมเริ่มไม่รู้จะเขียนอะไร 555+
คือนึกมุขเท่ ๆ ไม่ค่อยออก ไม่ค่อยอยากเขียน tutorial เท่าไร
มันดูซ้ำกับชาวบ้าน และก็ใน web หลัก ๆ ของ Python ก็แทบจะบอกซะหมดแล้ว
เขียนไปก็เปลืองพื้นที่ชาวบ้านเปล่า ๆ ให้เค้าเอาไว้เตะตะกล้อดีกว่า งึม ๆ
แล้ววันนี้จะนำเสนออะไรดีอะเนี่ย เอาเป็นแนวคิดในการเขียน เล่น ๆ ดีกว่า
ว่าแล้วก็มาใช้สมองอันน้อยนิดกัน

เริ่มจาก มี Logic ที่ว่า ต้องการเอาข้อมูล list มาเรียงเป็น String โดยมี comma ',' กั้น
อื่อ ถ้าเป็นคนทั่วไป ฉลาด ๆ คิดเยอะ ๆ ก็จะประมาณว่า
ให้วน list แล้วนำไปใส่ string ทีละตัว แล้วตามด้วย comma ', '
ตัวสุดท้ายไม่ต้องใส่ comma ', '
list = ['a', 'b', 'c', 'd']
r = ''
i = 1
for l in list:
    if i == len(list):
        r = '%s%s' %(r, l)
    else:
        r = '%s%s, ' %(r, l)
    i = i+1

note
สร้าง i เพื่อเก็บตำแหน่ง ปัจจุบัน จะได้รู้ว่าตัวสุดท้ายหรือยัง

สิ่งที่ได้
'a, b, c, d'

ยอ code หน่อยแล้วกัน
list = ['a', 'b', 'c', 'd']
r = ''
i = 1
for l in list:
    r = i == len(list) and '%s%s' %(r, l) or '%s%s, ' %(r, l)
    i = i+1

เสร็จแล้ว thinking smart ...

--------------------

กะคิดอีกแบบ วนแล้วใส่ comma ', ' ไปก่อน เดี๋ยวเกิดอะไรขึ้น แก้ทีหลัง (แอบหัวเราะ เหอ ๆ ๆ)
ก็จะเขียนขึ้นมาก่อนว่า
list = ['a', 'b', 'c', 'd']
r = ''
for l in list:
    r = '%s%s, ' %(r, l)

สิ่งที่ได้
'a, b, c, d, '

อะเกิน!!! แต่มิใช่ปัญหา ดูแล้ว comma space ', ' ตัวหลังเกินมา
แต่ไม่จำเป็นต้องรู้กระมังว่าตัวหลังคืออะไร รู้แค่กี่ตำแหน่งพอ 2 สินะ
ก็เอาสองตัวหลังออก logic นรก 555+
เพิ่ม code เป็น
list = ['a', 'b', 'c', 'd']
r = ''
for l in list:
    r = '%s%s, ' %(r, l)
if 2 > len(r):
    r = r[0: -2]

สิ่งที่ได้
'a, b, c, d'

ย่อ code หน่อยเพื่อ show power

list = ['a', 'b', 'c', 'd']
r = ''.join(['%s%s, '%(r, l) for l in list])
r = 2 <= len(r) and r[0: -2] or r

อื่อ จบ ๆ ๆ เดี๋ยวจ้างน้อง ๆ มาทำดีกว่า

ไม่มีความคิดเห็น: