Cách tìm số không lặp lại trong danh sách python

Sử dụng NumPy, bạn phải nhập mô-đun NumPy. Nhưng đây là một giải pháp khác, chỉ đếm số lần lặp lại của mọi phần tử trong danh sách

nhập numpy dưới dạng số np = [1, 2, 3, 4, 2, 3, 5] đếm = np. bincount[số] np. trong đó [[đếm > 1]][1] in [đếm]

đầu ra. [0 1 2 2 1 1]

Hãy bình luận nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào về hướng dẫn danh sách Python này

Ghi chú. IDE. PyCharm2021. 3 [Phiên bản cộng đồng]

cửa sổ 10

Trăn 3. 10. 1

Tất cả các ví dụ về Python đều có trong Python3, vì vậy có thể nó khác với python 2 hoặc các phiên bản nâng cấp

Bằng cấp về Khoa học Máy tính và Kỹ sư. Nhà phát triển ứng dụng và có kinh nghiệm về nhiều ngôn ngữ lập trình. Đam mê công nghệ & thích học hỏi kỹ thuật

Chia sẻ cái này

  • Facebook
  • WhatsApp
  • LinkedIn
  • Hơn

  • Twitter
  • In
  • reddit
  • Tumblr
  • Pinterest
  • Túi
  • điện báo
  • Ứng dụng trò chuyện
  • E-mail

Có liên quan

Phần tử không lặp lại

Tìm phần tử không lặp lại đầu tiên trong một mảng các số nguyên đã cho

ví dụ

Đầu vào. -1 2 -1 3 2 Đầu ra. 3 Giải thích. Số đầu tiên không lặp lại là. 3 đầu vào. 9 4 9 6 7 4 Đầu ra. 6

Cách tìm các bản sao từ danh sách trong Python

Kiểm tra xem một danh sách có các Phần tử trùng lặp hay không bằng cách sử dụng Bộ

Chúng tôi biết rằng các bộ trong Python chỉ chứa các phần tử duy nhất. Chúng ta có thể sử dụng thuộc tính này của tập hợp để kiểm tra xem danh sách có phần tử trùng lặp hay không

Đối với điều này, chúng tôi sẽ tạo một tập hợp từ các phần tử của danh sách. Sau đó, chúng tôi sẽ kiểm tra kích thước của danh sách và tập hợp. Nếu kích thước của cả hai đối tượng bằng nhau, nó sẽ xác nhận rằng danh sách không có phần tử trùng lặp. Nếu kích thước của tập hợp lớn hơn danh sách, điều đó có nghĩa là danh sách chứa các phần tử trùng lặp. Chúng ta có thể hiểu điều này từ ví dụ sau

chắc chắn check_duplicate[l]. mySet = set[l] if len[mySet] == len[l]. print["Danh sách không có phần tử trùng lặp. "] khác. print["Danh sách chứa các phần tử trùng lặp"] list1 = [1, 2, 3, 4, 5, 6, 7] print["Danh sách 1 là. ", list1] check_duplicate[list1] list2 = [1, 2, 1, 2, 4, 6, 7] print["List2 la. ", list2] check_duplicate[list2]

đầu ra

Danh sách1 là. [1, 2, 3, 4, 5, 6, 7] Danh sách không có phần tử trùng lặp. Danh sách2 là. [1, 2, 1, 2, 4, 6, 7] Danh sách chứa các phần tử trùng lặp

Theo cách tiếp cận trên, chúng ta cần tạo một tập hợp từ tất cả các phần tử của danh sách. Sau đó, chúng tôi cũng kiểm tra kích thước của tập hợp và danh sách. Các hoạt động này rất tốn kém

Thay vì sử dụng phương pháp này, chúng ta chỉ có thể tìm kiếm phần tử trùng lặp đầu tiên. Để làm điều này, chúng tôi sẽ bắt đầu từ phần tử đầu tiên của danh sách và sẽ tiếp tục thêm chúng vào tập hợp. Trước khi thêm các phần tử vào tập hợp, chúng ta sẽ kiểm tra xem phần tử đó đã có trong tập hợp hay chưa. Nếu có, danh sách chứa các phần tử trùng lặp. Nếu chúng ta có thể thêm từng phần tử của danh sách vào tập hợp, thì danh sách không chứa bất kỳ phần tử trùng lặp nào. Điều này có thể được hiểu từ ví dụ sau

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 là 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 của quá trình

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]

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 số,

unique_numbers = [1, 2, 3, 4]
2. Tôi chuyển danh sách này vào hàm,
unique_numbers = [1, 2, 3, 4]
3

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

unique_numbers = [1, 2, 3, 4]
1 để lấy các số duy nhất từ ​​danh sách
unique_numbers = [1, 2, 3, 4]
2

unique_numbers = set[numbers]

tôi có thứ tôi cần. những con số độc đáo. Bây giờ tôi cần đưa các giá trị này vào 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,

unique_numbers = [1, 2, 3, 4]
6. Cuối cùng, tôi trả lại danh sách này vào 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 có sẵn của Python

________số 8

Mặc dù mã này trông rất khác so với ví dụ đầu tiên, nhưng ý tưởng thì giống nhau. Sử dụng một tập hợp để lấy các 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.

unique_numbers = [1, 2, 3, 4]
7. Sau đó, mã ngoài cùng được đánh giá.
unique_numbers = [1, 2, 3, 4]
8

Tùy chọn 2 – Sử dụng phép lặp để xác định các giá trị duy nhất

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

Ý 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, hãy 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

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

Đây là những gì đang xảy ra trong mỗi bước của quá trình. Đầu tiên, tôi được đưa cho một danh sách các số,

unique_numbers = [1, 2, 3, 4]
2. Tôi chuyển danh sách này vào chức năng của mình,
unique_numbers = [1, 2, 3, 4]
3

Bên trong hàm, tôi tạo một danh sách trống,

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]
1. 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 danh sách

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

unique_numbers = [1, 2, 3, 4]
7

Đ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 danh sách

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]
1 không. 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, tôi trả về

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]
1 chứa tất cả các số duy nhất

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

unique_numbers = [1, 2, 3, 4]
0

Sự khác biệt là đ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

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]
1, thì hãy thêm nó

unique_numbers = [1, 2, 3, 4]
0

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

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

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



QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

Amy Haddad

Lập trình viên và nhà văn. cách học hiệu quả. com. công cụ lập kế hoạch hàng ngày. com

Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Chủ Đề