Danh sách không có thứ tự python

Để kiểm tra xem hai danh sách không có thứ tự xy có giống nhau hay không, hãy so sánh các bộ đã chuyển đổi với set[x] == set[y]. Tuy nhiên, điều này làm mất tất cả thông tin về các yếu tố trùng lặp. Để xem xét các bản sao, hãy so sánh các danh sách đã sắp xếp với sorted[x] == sorted[y]. Do cách triển khai giống như sắp xếp hợp nhất hiệu quả của hàm sorted[], điều này khá nhanh đối với các danh sách được sắp xếp gần hết

Vấn đề. Đưa ra là hai danh sách xy. Bạn muốn trả về

###################
# 1. Set Conversion
###################
def method_1[x, y]:
    return set[x] == set[y]

print[method_1[[1, 2, 3], [1, 2]]]
# False

print[method_1[[1, 2], [2, 1]]]
# True
1 nếu cả hai danh sách đều chứa các phần tử giống nhau và nếu không thì
###################
# 1. Set Conversion
###################
def method_1[x, y]:
    return set[x] == set[y]

print[method_1[[1, 2, 3], [1, 2]]]
# False

print[method_1[[1, 2], [2, 1]]]
# True
2. Một biến thể của vấn đề này là bỏ qua các bản sao [làm cho vấn đề này đơn giản hơn nhiều]

ví dụ

x = [1, 2, 3, 4, 5]
y = [1, 2, 3]
# compare[x, y] --> False

x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 5, 4]
# compare[x, y] --> True

x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
# compare[x, y] --> True

Hãy thảo luận về những cách Pythonic nhất để giải quyết vấn đề này. Dưới đây là tổng quan về mã tương tác nhanh

Bài tập. Lướt qua tất cả các phương thức và chạy mã. Những câu hỏi đến với tâm trí?

Đọc tiếp để tìm hiểu chi tiết về từng phương pháp

Phương pháp 1. Đặt chuyển đổi

Phương pháp này giả định rằng bạn bỏ qua các bản sao. Vì vậy, các danh sách

###################
# 1. Set Conversion
###################
def method_1[x, y]:
    return set[x] == set[y]

print[method_1[[1, 2, 3], [1, 2]]]
# False

print[method_1[[1, 2], [2, 1]]]
# True
3 và
###################
# 1. Set Conversion
###################
def method_1[x, y]:
    return set[x] == set[y]

print[method_1[[1, 2, 3], [1, 2]]]
# False

print[method_1[[1, 2], [2, 1]]]
# True
4 được coi là giống hệt nhau

###################
# 1. Set Conversion
###################
def method_1[x, y]:
    return set[x] == set[y]

print[method_1[[1, 2, 3], [1, 2]]]
# False

print[method_1[[1, 2], [2, 1]]]
# True

Chuyển đổi danh sách thành một tập hợp có độ phức tạp thời gian chạy tuyến tính. So sánh hai tập hợp về đẳng thức cũng có độ phức tạp thời gian chạy tuyến tính [do độ phức tạp thời gian chạy không đổi của tư cách thành viên tập hợp]. Vì vậy, về tổng thể, độ phức tạp thời gian chạy của phương pháp này là tuyến tính theo số lượng phần tử trong danh sách lớn hơn

Tuy nhiên, một tập hợp không chứa bất kỳ thông tin nào về số lần mỗi phần tử được biểu diễn. Để xem xét thông tin này, bạn sẽ cần một cấu trúc dữ liệu nhiều bộ

Phương pháp 2. Multiset với bộ đếm bộ sưu tập

Trong Python, có một số gói multiset có khả năng xem xét số lần mỗi phần tử được biểu diễn trong danh sách gốc. Một trong số đó là lớp

###################
# 1. Set Conversion
###################
def method_1[x, y]:
    return set[x] == set[y]

print[method_1[[1, 2, 3], [1, 2]]]
# False

print[method_1[[1, 2], [2, 1]]]
# True
5

###################
# 2. Collections Counter
###################

import collections

def method_2[x, y]:
    return collections.Counter[x] == collections.Counter[y]

print[method_2[[1, 1, 1], [1, 1]]]
# False

print[method_2[[1, 2, 3], [2, 1, 3]]]
# True

Phương pháp này cũng hiệu quả và nó ẩn các chi tiết triển khai dẫn đến mức độ tách rời cao hơn trong ứng dụng Python của bạn. Tuy nhiên, bạn có thể không thích nó yêu cầu nhập một phụ thuộc khác

Phương pháp 3. Sắp xếp

Sắp xếp danh sách trong Python sử dụng thuật toán hiệu quả cao dựa trên phép hợp nhất. Điều này có nghĩa là nếu danh sách được sắp xếp “gần như” thì quy trình sắp xếp sẽ rất nhanh. Chỉ trong trường hợp xấu nhất tuyệt đối, độ phức tạp tính toán là O[n log n] để sắp xếp danh sách

Ngay sau khi cả hai danh sách được sắp xếp, bạn có thể tiếp tục và sử dụng toán tử so sánh từng phần tử

###################
# 1. Set Conversion
###################
def method_1[x, y]:
    return set[x] == set[y]

print[method_1[[1, 2, 3], [1, 2]]]
# False

print[method_1[[1, 2], [2, 1]]]
# True
6 để kiểm tra danh tính của hai danh sách có thứ tự xy

###################
# 3. Sorting
###################

def method_3[x, y]:
    return sorted[x] == sorted[y]

print[method_2[[1, 1, 1], [1, 1]]]
# False

print[method_2[[1, 2, 3], [2, 1, 3]]]
# True

cảm ơn đã đọc bài viết này. Nếu bạn muốn học điều gì đó mới mỗi ngày, hãy tham gia chuỗi email Python miễn phí của tôi để không ngừng cải thiện Python và khoa học máy tính

Video liên quan

Video này liên quan đến vấn đề. kiểm tra xem hai danh sách được sắp xếp có giống hệt nhau không

Cách Pythonic nhất để kiểm tra xem hai danh sách được sắp xếp có giống nhau không


Xem video này trên YouTube

Đi đâu từ đây?

Đủ lý thuyết. Hãy thực hành một số

Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa

Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế

Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không?

🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người mới hoàn toàn

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn

Tham gia hội thảo trên web miễn phí ngay bây giờ

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Danh sách có thứ tự hay không có thứ tự trong Python?

Các đặc điểm quan trọng của danh sách Python như sau. Danh sách được sắp xếp . Danh sách có thể chứa bất kỳ đối tượng tùy ý nào. Các phần tử danh sách có thể được truy cập theo chỉ mục.

Sự khác biệt giữa các bộ sưu tập có thứ tự và không có thứ tự trong Python là gì?

Một tập hợp có thứ tự nghĩa là các phần tử của tập hợp có một thứ tự cụ thể. Thứ tự không phụ thuộc vào giá trị . Danh sách là một ví dụ. Một bộ sưu tập được sắp xếp/không có thứ tự có nghĩa là không chỉ bộ sưu tập có thứ tự, mà thứ tự còn phụ thuộc vào giá trị của phần tử.

Các giá trị không có thứ tự trong Python là gì?

Không có thứ tự – các mục của một tập hợp không có bất kỳ thứ tự xác định nào . Chưa được lập chỉ mục – chúng tôi không thể truy cập các mục có [i] như với danh sách. Có thể thay đổi - một tập hợp có thể được sửa đổi thành số nguyên hoặc bộ dữ liệu. Có thể lặp lại - chúng ta có thể lặp qua các mục của một tập hợp.

Mục đích của danh sách không có thứ tự là gì?

Danh sách không có thứ tự thường là danh sách các mục có dấu đầu dòng. HTML3. 0 cung cấp cho bạn khả năng tùy chỉnh dấu đầu dòng, thực hiện mà không cần dấu đầu dòng và ngắt dòng các mục trong danh sách theo chiều ngang hoặc chiều dọc cho danh sách nhiều cột .

Chủ Đề