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

Python for loop check islast

คงเคยเจอกันบ่อยแล้วนะครับ สำหรับ Develop ทุกท่าน ที่ต้องมานั่งเขียน loop
แล้วต้องเช็คว่า ถ้าเป็นข้อมูลสุดท้าย ให้ใส่ข้อแม้เพิ่ม หรือปิด ท้ายด้วยอะไรสักอย่าง

ถ้าเป็น code ปกติ เราก็จะเขียนอะไรบางอย่างเพื่อนให้รู้ว่าเป็นข้อมูลสุดท้ายของ list นั้น ๆ

ข้อมูลมีว่า
list = ['a', 'b', 'c', 'd']

ว่าจะเขียนถึง z เอาเป็นว่าไร้สาระ แค่ยกตัวอย่าง ไม่ต้องมากขนาดนั้น
ก็เลยสงสัยจริง ๆ ว่าคนที่ทำ How to หรือตัวอย่าง ทำไมต้องเอา data จริง
หรือข้อมูลมากมายมาทำไม ผมยิ่งมี memory น้อย ๆ อยู่

สิ่งที่ต้องทำคือ ให้ print ข้อมูล ใน list datas โดยให้ใส่ comma ', '
เพื่อแยกข้อมูลในแต่ละช่วง

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

เขียน function มาทำเรื่อง check last นี้ดีกว่า
def for_islast(l):
    i = 1
    for s in l:
        if i < len(l):
            yield s, False
        i = i+1
    yield s, True
เวลาเรียกใช้ก็จะดูดีขึ้นนิดนึง
list = ['a', 'b', 'c', 'd']
r = ''
for l, islast in for_islast(list):
    r = islast and '%s%s'%(r, l) or '%s%s, ' %(r, l)

ในส่วนนี้จะเห็นว่าเขียน code มากขึ้น
แต่ถ้าคิดในแง่ของงานที่มีในลักษณะแบบนี้มาก ๆ
ก็จะเขียนสะดวกขึ้น คือไม่ต้องมีการประกาศตัวแปรที่ไม่ได้ใช้ให้รกอีกมากมาย
และข้อดีของการเขียนขึ้นในลักษณะนี้คือ ความตรงไปตรงมา คือ
เมื่อทำการอ่าน code จะสามารถเข้าใจได้โดยง่ายและไม่ต้องใช้ logic
ในการคิดมากเพื่อให้การอ่าน code เป็นไปด้วยความรวดเร็วครับ

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