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

กรอง Tuples ตามเงื่อนไข Element ใน List ด้วย Python

บทนำ

การกรอง (filter) tuples ในลิสต์ โดยให้ผ่านเฉพาะ tuple ที่มี element อย่างน้อยหนึ่งตัวตรงกับค่าใน target list สามารถทำได้ด้วย list comprehension และ any()

ตัวอย่างโค้ด

data = [(11, 14), (54, 56, 87), (98, 0, 10), (13, 76)]
target = [34, 11]

print("ข้อมูล:", data)
print("Target values:", target)

# กรอง: เก็บ tuple ที่มี element อยู่ใน target
filtered = [tup for tup in data if any(val in target for val in tup)]

print("หลังกรอง:", filtered)

ผลลัพธ์

ข้อมูล: [(11, 14), (54, 56, 87), (98, 0, 10), (13, 76)]
Target values: [34, 11]
หลังกรอง: [(11, 14)]

คำอธิบาย

  • any(val in target for val in tup) ตรวจสอบว่าใน tuple นี้มีค่าไหนอยู่ใน target ไหม
  • val in target ตรวจสอบ membership (O(n) สำหรับ list, O(1) สำหรับ set)
  • แปลง target เป็น set จะเร็วขึ้น: target_set = set(target)

เวอร์ชันปรับปรุงประสิทธิภาพ

target_set = set(target)  # O(1) lookup
filtered = [tup for tup in data if any(val in target_set for val in tup)]

กรองแบบเข้มงวด: ต้องมีทุกค่าใน target (All)

# tuple ต้องมี element ครอบคลุม target ทั้งหมด
filtered_all = [tup for tup in data if all(val in tup for val in target)]