ฉันจะเปรียบเทียบรายการสั่งซื้อสองรายการใน python ได้อย่างไร


107

ถ้าฉันมีรายการยาวหนึ่งรายการmyList = [0,2,1,0,2,1]ฉันจะแบ่งออกเป็นสองรายการ:

a = [0,2,1]
b = [0,2,1]

ฉันจะเปรียบเทียบสองรายการนี้ได้อย่างไรเพื่อดูว่าทั้งสองรายการเท่ากัน / เหมือนกันโดยมีข้อ จำกัด ที่ต้องอยู่ในลำดับเดียวกัน

ฉันเคยเห็นคำถามที่ขอให้เปรียบเทียบสองรายการโดยการจัดเรียง แต่ในกรณีเฉพาะของฉันฉันไม่ได้ตรวจสอบการเปรียบเทียบแบบเรียงลำดับ แต่เป็นการเปรียบเทียบรายการที่เหมือนกัน

คำตอบ:


177

เพียงใช้ตัว==ดำเนินการแบบคลาสสิก:

>>> [0,1,2] == [0,1,2]
True
>>> [0,1,2] == [0,2,1]
False
>>> [0,1] == [0,1,2]
False

รายการจะเท่ากันหากองค์ประกอบที่ดัชนีเดียวกันเท่ากัน การสั่งซื้อจะถูกนำมาพิจารณาแล้ว


3
สิ่งนี้สามารถส่งคืนข้อผิดพลาดต่อไปนี้ด้วยรายการที่เป็นตัวเลข:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Alex Reynolds

สิ่งที่ @AlexReynolds พูด คุณจะต้องทดสอบด้วยหรือall(arr1 == arr2) (arr1 == arr2).all()
Julio

@ อเล็กซ์นั่นคืออาร์เรย์ไม่ใช่รายการ ทั้งสองเป็นประเภทข้อมูลที่เรียงลำดับ แต่แตกต่างกันในเชิงแนวคิด การดำเนินการที่คุณใช้กับอาร์เรย์จะถูกนำไปใช้กับองค์ประกอบทั้งหมด แต่สิ่งเดียวกันนี้ไม่เป็นจริงสำหรับรายการ
wjandrea

11

หากคุณต้องการตรวจสอบว่าเหมือนกันหรือไม่a == bควรระบุ true / false โดยคำนึงถึงลำดับด้วย

ในกรณีที่คุณต้องการเปรียบเทียบองค์ประกอบคุณสามารถใช้ numpy เพื่อเปรียบเทียบได้

c = (numpy.array(a) == numpy.array(b))

ที่นี่ c จะมีอาร์เรย์ที่มี 3 องค์ประกอบซึ่งทั้งหมดเป็นจริง (สำหรับตัวอย่างของคุณ) ในองค์ประกอบเหตุการณ์ของ a และ b ไม่ตรงกันองค์ประกอบที่เกี่ยวข้องใน c จะเป็นเท็จ


จากนั้นตรวจสอบว่า c.all () เป็นจริงหรือไม่
Pulkit Bansal

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.