HomeLập trìnhPythonDanh sách duy...

Danh sách duy nhất của Python – Cách lấy tất cả các giá trị duy nhất trong danh sách hoặc mảng


Giả sử bạn có một danh sách chứa các số trùng lặp:

numbers = [1, 1, 2, 3, 3, 4]

Nhưng bạn muốn có một danh sách duy nhất con số.

unique_numbers = [1, 2, 3, 4]

Có một số cách để lấy danh sách các giá trị duy nhất trong Python. Bài viết này sẽ chỉ cho bạn cách.

Sử dụng một set một cách để đi về nó. Một tập hợp hữu ích vì nó chứa các phần tử duy nhất.

Bạn có thể sử dụng một tập hợp để lấy các phần tử duy nhất. Sau đó, biến tập hợp thành một danh sách.

Hãy xem xét hai cách tiếp cận sử dụng tập hợp và danh sách. Cách tiếp cận đầu tiên khá dài dòng, nhưng thật hữu ích khi xem điều gì đang xảy ra trong mỗi bước thực hiện.

numbers = [1, 2, 2, 3, 3, 4, 5]


def get_unique_numbers(numbers):

    list_of_unique_numbers = []

    unique_numbers = set(numbers)

    for number in unique_numbers:
        list_of_unique_numbers.append(number)

    return list_of_unique_numbers


print(get_unique_numbers(numbers))
# result: [1, 2, 3, 4, 5]

Chúng ta hãy xem xét kỹ hơn những gì đang xảy ra. Tôi được đưa cho một danh sách các con số, numbers. Tôi chuyển danh sách này vào hàm, get_unique_numbers.

Bên trong hàm, tôi tạo một danh sách trống, danh sách này cuối cùng sẽ chứa tất cả các số duy nhất. Sau đó, tôi sử dụng một set để có được những con số duy nhất từ numbers danh sách.

Đọc thêm  Giới thiệu về kiểm tra đơn vị trong Python

unique_numbers = set(numbers)

Tôi có những gì tôi cần: những con số duy nhất. Bây giờ tôi cần đưa các giá trị này vào một danh sách. Để làm như vậy, tôi sử dụng vòng lặp for để lặp qua từng số trong tập hợp.

for number in unique_numbers:
       list_of_unique_numbers.append(number)

Trên mỗi lần lặp lại, tôi thêm số hiện tại vào danh sách, list_of_unique_numbers. Cuối cùng, tôi trả về danh sách này ở cuối chương trình.

Có một cách ngắn hơn để sử dụng tập hợp và danh sách để nhận các giá trị duy nhất trong Python. Đó là những gì chúng ta sẽ giải quyết tiếp theo.

Cách tiếp cận ngắn hơn với Set

Tất cả mã được viết trong ví dụ trên có thể được cô đọng thành một dòng với sự trợ giúp của các hàm tích hợp sẵn của Python.

numbers = [1, 2, 2, 3, 3, 4, 5]
unique_numbers = list(set(numbers))
print(unique_numbers)
# Result: [1, 2, 3, 4, 5]

Mặc dù mã này trông rất khác so với ví dụ đầu tiên, ý tưởng là như nhau. Sử dụng một bộ để có được những con số duy nhất. Sau đó, biến tập hợp thành một danh sách.

unique_numbers = list(set(numbers))

Thật hữu ích khi nghĩ “từ trong ra ngoài” khi đọc đoạn mã trên. Mã trong cùng được đánh giá đầu tiên: set(numbers). Sau đó, mã ngoài cùng được đánh giá: list(set(numbers)).

Lặp lại là một cách tiếp cận khác để xem xét.

Đọc thêm  Cách gỡ lỗi mã Python của bạn bằng Trình gỡ lỗi Python (pdb)

Ý tưởng chính là tạo một danh sách trống chứa các số duy nhất. Sau đó, sử dụng vòng lặp for lặp qua từng số trong danh sách đã cho. Nếu số đã có trong danh sách duy nhất, thì hãy tiếp tục với lần lặp tiếp theo. Nếu không, thêm số vào nó.

Hãy xem xét hai cách sử dụng phép lặp để lấy các giá trị duy nhất trong danh sách, bắt đầu bằng cách dài dòng hơn.

numbers = [20, 20, 30, 30, 40]


def get_unique_numbers(numbers):
    unique = []

    for number in numbers:
        if number in unique:
            continue
        else:
            unique.append(number)
    return unique


print(get_unique_numbers(numbers))
# Result: [20, 30, 40]

Đây là những gì đang xảy ra mỗi bước của con đường. Đầu tiên, tôi được đưa cho một danh sách các số, numbers. Tôi chuyển danh sách này vào chức năng của mình, get_unique_numbers.

Bên trong chức năng, tôi tạo một danh sách trống, unique. Cuối cùng, danh sách này sẽ chứa tất cả các số duy nhất.

Tôi sử dụng vòng lặp for để lặp qua từng số trong numbers danh sách.

 for number in numbers:
       if number in unique:
           continue
       else:
           unique.append(number)

Điều kiện bên trong vòng lặp kiểm tra xem số lần lặp hiện tại có nằm trong unique danh sách. Nếu vậy, vòng lặp tiếp tục đến lần lặp tiếp theo. Nếu không, số sẽ được thêm vào danh sách này.

Đây là điểm quan trọng: chỉ các số duy nhất được thêm vào. Khi vòng lặp hoàn tất, sau đó tôi quay lại unique chứa tất cả các số duy nhất.

Đọc thêm  Giới thiệu về Bag of Words và cách viết mã bằng Python cho NLP

Cách tiếp cận ngắn hơn với phép lặp

Có một cách khác để viết hàm ít dòng hơn.

numbers = [20, 20, 30, 30, 40]


def get_unique_numbers(numbers):
    unique = []
    for number in numbers:
        if number not in unique:
            unique.append(number)
    return unique
#Result: [20, 30, 40]

Sự khác biệt là có điều kiện. Lần này nó được thiết lập để đọc như thế này: nếu số không có trong uniquesau đó thêm nó.

if number not in unique:
    unique.append(number)

Nếu không, vòng lặp sẽ di chuyển đến số tiếp theo trong danh sách, numbers.

Kết quả là như nhau. Tuy nhiên, đôi khi khó nghĩ và đọc mã hơn khi boolean bị phủ định.

Có nhiều cách khác để tìm các giá trị duy nhất trong danh sách Python. Nhưng có lẽ bạn sẽ thấy mình đạt được một trong những cách tiếp cận được đề cập trong bài viết này.

Tôi viết về việc học lập trình và những cách tốt nhất để thực hiện nó trên amymhaddad.com. Theo dõi tôi trên Twitter: @amymhaddad.





Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status