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

Python - หาค่าร่วมของลิสต์ที่มีสับลิสต์หลายชั้น

หาสับลิสต์ที่ซ้ำกันระหว่างสองลิสต์หลัก

วิธีที่ 1: List Comprehension

list_1 = [[1, 2], [3, 4], [5, 6]]
list_2 = [[3, 4]]

result = [sub_list for sub_list in list_1 if sub_list in list_2]
print(result)  # [[3, 4]]

วิธีที่ 2: ใช้ Set (แปลงเป็น Tuple ก่อน)

list_1 = [[1, 2], [3, 4], [5, 6]]
list_2 = [[3, 4]]

tuple_1 = map(tuple, list_1)
tuple_2 = map(tuple, list_2)

result = list(map(list, set(tuple_1).intersection(tuple_2)))
print(result)  # [[3, 4]]

สรุป

วิธี Set เร็วกว่าสำหรับข้อมูลเยอะ แต่ต้องแปลงเป็น Tuple ก่อนเพราะ List ไม่ hashable