Làm cách nào để so sánh hai danh sách có thứ tự trong python?


105

Nếu tôi có một danh sách dài: myList = [0,2,1,0,2,1]tôi chia thành hai danh sách:

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

làm cách nào tôi có thể so sánh hai danh sách này để xem chúng có bằng nhau / giống hệt nhau hay không, với ràng buộc rằng chúng phải theo cùng một thứ tự?

Tôi đã thấy các câu hỏi yêu cầu so sánh hai danh sách bằng cách sắp xếp chúng, nhưng trong trường hợp cụ thể của tôi, tôi không kiểm tra so sánh được sắp xếp mà là so sánh danh sách giống hệt nhau.

Câu trả lời:


175

Chỉ cần sử dụng ==toán tử cổ điển :

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

Danh sách bằng nhau nếu các phần tử ở cùng một chỉ mục bằng nhau. Đặt hàng được tính đến sau đó.


3
Điều này có thể trả lại lỗi sau với một danh sách phức tạp:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Alex Reynolds

@AlexReynolds đã nói gì. Bạn phải kiểm tra với all(arr1 == arr2)hoặc (arr1 == arr2).all().
Julio

10

Nếu bạn chỉ muốn kiểm tra xem chúng có giống nhau hay không, a == bhãy cung cấp cho bạn đúng / sai khi tính đến thứ tự.

Trong trường hợp bạn muốn so sánh các phần tử, bạn có thể sử dụng numpy để so sánh

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

Ở đây, c sẽ chứa một mảng có 3 phần tử đều đúng (ví dụ của bạn). Trong trường hợp các phần tử của a và b không khớp, thì các phần tử tương ứng trong c sẽ là false.


Và sau đó kiểm tra xem c.all () có phải là True
Pulkit Bansal

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.