# ใช้ for i in range ทำงานซ้ำๆ
for i in range(1,11):
print(i)
1 2 3 4 5 6 7 8 9 10
# x เป็นลิสต์ที่มีสมาชิกสิบตัว เป็นเลข 1 ถึง 10
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# ดูจำนวนสมาชิกในลิสต์ได้ด้วยคำสั่ง len()
len(x)
10
# สร้าง y เป็นลิสต์ว่างๆแล้วเติม 1 เข้าไปเป็นสมาชิก
y = []
y.append(1)
y
[1]
# เติม 2 เข้าไปเป็นสมาชิก
y.append(2)
y
[1, 2]
# ใช้ ลิสต์.append(...) เพื่อเติมสมาชิกทีละตัว
y = []
y.append(1**2)
y.append(2**2)
y.append(3**2)
y.append(4**2)
y.append(5**2)
y.append(6**2)
y.append(7**2)
y.append(8**2)
y.append(9**2)
y.append(10**2)
y
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# ใช้ for i in range ทำงาน append ซ้ำๆให้
y2 = []
for i in range(1, 11):
y2.append(i**2)
y2
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# ใช้วิธี list comprehension สร้างลิสต์ก็ได้
y3 = [i**3 for i in range(1,11)]
y3
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
# ตอนนี้ x เป็นลิสต์
x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# for i in ไม่จำเป็นต้องตามด้วย range ก็ได้ ตามด้วยอะไรก็ได้ที่มีสมาชิกหลายๆตัวเช่นลิสต์ x
[i/2 for i in x]
[0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]
# List comprehension สามารถสร้างคู่ลำดับก็ได้
[(i, i**2) for i in range(1,11)]
[(1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64), (9, 81), (10, 100)]
# List comprehension สามารถใช้ตัวแปรมากกว่าหนึ่งตัวในการวน
# ในที่นี้ใช้ i และ j
x = [(i,j) for i in range(1,7) for j in range(1,7)]
print(x)
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]
len(x)
36
# List comprehension สามารถคัดกรองเฉพาะข้อมูลที่เราต้องการได้
# ในที่นี้เราต้องการเฉพาะ i+j == 7
x = [(i, j) for i in range(1,7) for j in range(1,7) if i + j == 7 ]
print(x)
[(1, 6), (2, 5), (3, 4), (4, 3), (5, 2), (6, 1)]
# ในที่นี้เราต้องการเฉพาะ i+j == 6
y = [(i, j) for i in range(1,7) for j in range(1,7) if i + j == 6 ]
print(y)
[(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)]
# ในที่นี้เราต้องการเฉพาะ i+j == 8
[(i, j) for i in range(1,7) for j in range(1,7) if i + j == 8 ]
[(2, 6), (3, 5), (4, 4), (5, 3), (6, 2)]
# คราวนี้เราใช้ตัวแปร i, j, k วนเลย
# วน i, j จาก 1 ถึง 6
# วน k จาก 1 ถึง 12
# สร้างคู่่่ลำดับ (i,j) ที่ i+j == k
[(k, [(i,j) for i in range(1,7) for j in range(1,7) if i+j == k]) for k in range(1,13)]
[(1, []), (2, [(1, 1)]), (3, [(1, 2), (2, 1)]), (4, [(1, 3), (2, 2), (3, 1)]), (5, [(1, 4), (2, 3), (3, 2), (4, 1)]), (6, [(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)]), (7, [(1, 6), (2, 5), (3, 4), (4, 3), (5, 2), (6, 1)]), (8, [(2, 6), (3, 5), (4, 4), (5, 3), (6, 2)]), (9, [(3, 6), (4, 5), (5, 4), (6, 3)]), (10, [(4, 6), (5, 5), (6, 4)]), (11, [(5, 6), (6, 5)]), (12, [(6, 6)])]