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
- Hơn
- In
- Tumblr
- Túi
- điện báo
- Ứng dụng trò chuyện
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. 6Cá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ặpTheo 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]
3Bê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]
2unique_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ìnhCó 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ố 8Mặ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]
8Tùy chọn 2 – Sử dụng phép lặp để xác định các giá trị duy nhấtLặ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]
3Bê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ấtTô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]
2unique_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ấtCá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]
0Sự 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]
0Nế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]
2Kế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
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