Comprehension เป็นวิธีเขียนโค้ดกระชับสร้าง sequence ใหม่ (list, dict, set, generator) จาก sequence เดิม อาจเกี่ยวข้องกับการแปลงชนิดข้อมูลหลายขั้นตอน
List Comprehension
สร้างลิสต์ใหม่จากการดัดแปลงค่าลิสต์เดิม ตัวอย่างบวก 3 ทุกค่า
โค้ดตัวอย่าง
given_list = [x for x in range(5)]
print(given_list)
new_list = [var + 3 for var in given_list]
print(new_list)
ผลลัพธ์
[0, 1, 2, 3, 4]
[3, 4, 5, 6, 7]
Dictionary Comprehension
สร้าง Dictionary จากลิสต์
โค้ดตัวอย่าง
given_list = [x for x in range(5)]
print(given_list)
new_dict = {var: var + 3 for var in given_list}
print(new_dict)
ผลลัพธ์
[0, 1, 2, 3, 4]
{0: 3, 1: 4, 2: 5, 3: 6, 4: 7}
สร้าง Dictionary จากสองลิสต์ด้วย zip()
โค้ดตัวอย่าง
list1 = [x for x in range(5)]
list2 = ['Mon','Tue','Wed','Thu','Fri']
print(list1)
print(list2)
new_dict = {key: value for (key, value) in zip(list1, list2)}
print(new_dict)
ผลลัพธ์
[0, 1, 2, 3, 4]
['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
{0: 'Mon', 1: 'Tue', 2: 'Wed', 3: 'Thu', 4: 'Fri'}
Set Comprehension
สร้าง Set ใหม่จาก Set หรือ List เดิม
โค้ดตัวอย่าง
given_set = {x for x in range(5)}
print(given_set)
new_set = {var + 3 for var in given_set}
print(new_set)
ผลลัพธ์
{0, 1, 2, 3, 4}
{3, 4, 5, 6, 7}
Generator Comprehension
สร้าง Generator จากลิสต์เดิม ประหยัดหน่วยความจำ เพราะจัดสรรหน่วยความจำเมื่อต้องการไอเท็มเท่านั้น
โค้ดตัวอย่าง
given_list = [x for x in range(5)]
print(given_list)
new_gen = (var + 3 for var in given_list)
for var1 in new_gen:
print(var1, end=" ")
ผลลัพธ์
[0, 1, 2, 3, 4]
3 4 5 6 7