เป็นไปได้ที่จะมีรายการที่มีองค์ประกอบภายในเป็นรายการด้วย ในกรณีเช่นนี้ เราอาจพบความต้องการเมื่อเราต้องหาองค์ประกอบทั่วไปในรายการภายในเหล่านี้ ในบทความนี้ เราจะหาแนวทางในการบรรลุเป้าหมายนี้
พร้อมแผนที่และทางแยก
ทางแยกเป็นแนวคิดทางคณิตศาสตร์อย่างง่ายในการค้นหาองค์ประกอบทั่วไประหว่างเซตต่างๆ Python มี set method ซึ่งคืนค่าชุดที่มีความคล้ายคลึงกันระหว่างสองชุดขึ้นไป ดังนั้นเราจึงแปลงองค์ประกอบของรายการเป็นชุดผ่านฟังก์ชันแผนที่ก่อน จากนั้นจึงใช้วิธีการตั้งค่ากับรายการที่แปลงแล้วทั้งหมด
ตัวอย่าง
listA = [['Mon', 3, 'Tue', 7,'Wed',4],['Thu', 5,'Fri',11,'Tue', 7],['Wed', 9, 'Tue', 7,'Wed',6]] # Given list print("Given list of lists : \n",listA) # Applying intersection res = list(set.intersection(*map(set, listA))) # Result print("The common elements among inners 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 inners lists : ['Tue', 7]
พร้อมลดและแลมบ์ดา
เรายังสามารถใช้ฟังก์ชัน reduce ใน python ได้อีกด้วย ฟังก์ชันนี้ใช้เพื่อใช้ฟังก์ชันที่กำหนดที่ส่งผ่านไปยังฟังก์ชันดังกล่าวเป็นอาร์กิวเมนต์สำหรับองค์ประกอบรายการทั้งหมดที่กล่าวถึงในลำดับที่ส่งผ่าน ฟังก์ชันแลมบ์ดาค้นหาองค์ประกอบทั่วไปโดยวนซ้ำผ่านแต่ละรายการที่ซ้อนกันหลังจากตั้งค่าแล้ว
ตัวอย่าง
from functools import reduce listA = [['Mon', 3, 'Tue', 7,'Wed',4],['Thu', 5,'Fri',11,'Tue', 7],['Wed', 9, 'Tue', 7,'Wed',6]] # Given list print("Given list of lists : \n",listA) # Applying reduce res = list(reduce(lambda i, j: i & j, (set(n) for n in listA))) # Result print("The common elements among inners 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 inners lists : ['Tue', 7]