TL; DR:
โซลูชัน (1)
import numpy as np
main_list = np.setdiff1d(list_2,list_1)
# yields the elements in `list_2` that are NOT in `list_1`
วิธีแก้ปัญหา (2) คุณต้องการรายการที่จัดเรียง
def setdiff_sorted(array1,array2,assume_unique=False):
ans = np.setdiff1d(array1,array2,assume_unique).tolist()
if assume_unique:
return sorted(ans)
return ans
main_list = setdiff_sorted(list_2,list_1)
คำอธิบาย:
(1)คุณสามารถใช้ NumPy ของsetdiff1d( array1, array2, assume_unique= False)
assume_uniqueถามผู้ใช้ว่าอาร์เรย์นั้นไม่ซ้ำกันหรือไม่
หากFalseมีการกำหนดองค์ประกอบที่ไม่ซ้ำกันก่อน
ถ้าTrueฟังก์ชันจะถือว่าองค์ประกอบนั้นไม่ซ้ำกันอยู่แล้วและฟังก์ชันจะข้ามการกำหนดองค์ประกอบที่ไม่ซ้ำกัน
อัตราผลตอบแทนนี้ค่าที่ไม่ซ้ำกันในarray1ที่ไม่ได้array2อยู่ใน assume_uniqueเป็นFalseค่าเริ่มต้น
หากคุณกังวลเกี่ยวกับองค์ประกอบเฉพาะ (ขึ้นอยู่กับการตอบสนองของ Chinny84 ) ให้ใช้ (โดยที่assume_unique=False=> ค่าเริ่มต้น):
import numpy as np
list_1 = ["a", "b", "c", "d", "e"]
list_2 = ["a", "f", "c", "m"]
main_list = np.setdiff1d(list_2,list_1)
# yields the elements in `list_2` that are NOT in `list_1`
(2)
สำหรับผู้ที่ต้องการเรียงคำตอบฉันได้สร้างฟังก์ชันที่กำหนดเอง:
import numpy as np
def setdiff_sorted(array1,array2,assume_unique=False):
ans = np.setdiff1d(array1,array2,assume_unique).tolist()
if assume_unique:
return sorted(ans)
return ans
หากต้องการรับคำตอบให้เรียกใช้:
main_list = setdiff_sorted(list_2,list_1)
หมายเหตุด้านข้าง:
(a) โซลูชันที่ 2 (ฟังก์ชันกำหนดเองsetdiff_sorted) ส่งคืนรายการ (เทียบกับอาร์เรย์ในโซลูชัน 1)
(b) หากคุณไม่แน่ใจว่าองค์ประกอบนั้นไม่ซ้ำกันหรือไม่เพียงแค่ใช้การตั้งค่าเริ่มต้นของ NumPy setdiff1dในทั้งสองโซลูชัน A และ B อะไรคือตัวอย่างของภาวะแทรกซ้อน ดูหมายเหตุ (c)
(c) สิ่งต่างๆจะแตกต่างกันไปหากรายการใดรายการหนึ่งจากสองรายการไม่ซ้ำกัน
พูดlist_2ไม่ซ้ำใคร: list2 = ["a", "f", "c", "m", "m"]. เก็บlist1ตามที่เป็นอยู่: list_1 = ["a", "b", "c", "d", "e"]
การตั้งค่าเริ่มต้นของassume_uniqueผลตอบแทน["f", "m"](ในทั้งสองวิธี) อย่างไรก็ตามหากคุณตั้งค่าเป็นค่าเริ่มต้น โปรดทราบว่าคำตอบทั้งสองจะเรียงลำดับassume_unique=True["f", "m", "m"]การแก้ปัญหาทั้งสองให้ ทำไม? เนื่องจากผู้ใช้สันนิษฐานว่าองค์ประกอบไม่ซ้ำกัน) ดังนั้นควรเก็บไว้ดีกว่าassume_unique
หลามnumpy
list_2ที่ไม่ปรากฏที่ไหนเลยlist_1หรือองค์ประกอบในlist_2นั้นไม่มีอยู่ในดัชนีเดียวกันในlist_1?