วันอังคารที่ 27 กรกฎาคม พ.ศ. 2553

python solution for of for of for

อ่า หัวข้องง ๆ กันเลยทีเดียว
หลายคนคงเคยเจอกันแล้ว ที่ มีการวน loop ซ้อน loop ซ้อน loop
มันจะเป็นประมาณนี้ ให้นำแต่ละตัวมารวมกัน ใส่อีก list นึง

l1 = ['www', 'wap']
l2 = ['google', 'yahoo', 'gmail']
l3 = ['com', 'co.th']

list = []
for i in l1:
    for j in l2:
        for k in l3:
            list.append('http://%s.%s.%s' %(i, j, k))

print list

ผลลัพท์
['http://www.google.com',
'http://www.google.co.th',
'http://www.yahoo.com',
'http://www.yahoo.co.th',
'http://www.gmail.com',
'http://www.gmail.co.th',
'http://wap.google.com',
'http://wap.google.co.th',
'http://wap.yahoo.com',
'http://wap.yahoo.co.th',
'http://wap.gmail.com',
'http://wap.gmail.co.th']


แยก logic กับ business ออกจากกัน
l1 = ['www', 'wap']
l2 = ['google', 'yahoo', 'gmail']
l3 = ['com', 'co.th']

def for_list(lists):  
    for i in l1:
        for j in l2:
            for k in l3:
                yield l1, l2, l3

lists = [l1, l2, l3]
list = ['http://%s.%s.%s' %(i, j, k) for i, j, k in for_list(lists)]

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