กำหนดลิสต์ที่สมาชิกเป็นลิสต์ ต้องการหาสมาชิกที่ปรากฏในทุก sublist (intersection)
ใช้ map และ set.intersection
แปลงแต่ละ sublist เป็น set แล้ว intersection ทั้งหมด
ตัวอย่าง
listA = [['Mon', 3, 'Tue', 7, 'Wed', 4], ['Thu', 5, 'Fri', 11, 'Tue', 7], ['Wed', 9, 'Tue', 7, 'Wed', 6]]
print("Given list of lists : \n", listA)
res = list(set.intersection(*map(set, listA)))
print("The common elements among inner lists : ", res)
ผลลัพธ์
Given list of lists : [['Mon', 3, 'Tue', 7, 'Wed', 4], ['Thu', 5, 'Fri', 11, 'Tue', 7], ['Wed', 9, 'Tue', 7, 'Wed', 6]] The common elements among inner lists : ['Tue', 7]
ใช้ reduce และ lambda
reduce(lambda i, j: i & j, (set(n) for n in listA))
ตัวอย่าง
from functools import reduce
listA = [['Mon', 3, 'Tue', 7, 'Wed', 4], ['Thu', 5, 'Fri', 11, 'Tue', 7], ['Wed', 9, 'Tue', 7, 'Wed', 6]]
print("Given list of lists : \n", listA)
res = list(reduce(lambda i, j: i & j, (set(n) for n in listA)))
print("The common elements among inner lists : ", res)
ผลลัพธ์
Given list of lists : [['Mon', 3, 'Tue', 7, 'Wed', 4], ['Thu', 5, 'Fri', 11, 'Tue', 7], ['Wed', 9, 'Tue', 7, 'Wed', 6]] The common elements among inner lists : ['Tue', 7]