Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาองค์ประกอบทั่วไปในรายการของรายการใน Python


เป็นไปได้ที่จะมีรายการที่มีองค์ประกอบภายในเป็นรายการด้วย ในกรณีเช่นนี้ เราอาจพบความต้องการเมื่อเราต้องหาองค์ประกอบทั่วไปในรายการภายในเหล่านี้ ในบทความนี้ เราจะหาแนวทางในการบรรลุเป้าหมายนี้

พร้อมแผนที่และทางแยก

ทางแยกเป็นแนวคิดทางคณิตศาสตร์อย่างง่ายในการค้นหาองค์ประกอบทั่วไประหว่างเซตต่างๆ 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]