Có thể đặt có giá trị trùng lặp trong Python
Trong bài viết này, chúng tôi sẽ thảo luận về các cách khác nhau để kiểm tra xem một danh sách có chứa bất kỳ phần tử trùng lặp nào hay không Show
Giả sử chúng ta có một danh sách các phần tử i. e listOfElems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test'] Bây giờ chúng tôi muốn kiểm tra xem danh sách này có chứa bất kỳ phần tử trùng lặp nào hay không. Có một số cách để làm điều này, nhưng ở đây chúng tôi sẽ thảo luận về 3 cách và cũng sẽ phân tích hiệu suất ở đó Kiểm tra các mục trùng lặp trong danh sách bằng cách sử dụng Set & bằng cách so sánh các kích thướcĐể kiểm tra xem một danh sách có chứa bất kỳ phần tử trùng lặp nào hay không, hãy làm theo các bước sau,
Chúng tôi đã tạo một hàm tuân theo thuật toán trên i. e def checkIfDuplicates_1(listOfElems): ''' Check if given list contains any duplicates ''' if len(listOfElems) == len(set(listOfElems)): return False else: return True Bây giờ hãy sử dụng chức năng này để kiểm tra xem danh sách của chúng tôi có chứa bất kỳ bản sao nào hay không. e listOfElems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test'] result = checkIfDuplicates_1(listOfElems) if result: print('Yes, list contains duplicates') else: print('No duplicates found in list') đầu ra Yes, list contains duplicates Phân tích độ phức tạp của giải pháp này Vì chúng ta đang tạo một tập hợp từ danh sách, nên độ phức tạp sẽ là n(log(n)). So sánh kích thước là phép toán O(1). Vì vậy, độ phức tạp của giải pháp này là n(log(n)) Ngay cả trong kịch bản tốt nhất tôi. e. nếu danh sách chỉ chứa phần tử trùng lặp, thì độ phức tạp của giải pháp này sẽ là n(log(n)) vì chúng tôi chỉ thêm tất cả các phần tử từ danh sách vào tập hợp Hãy xem xét một giải pháp khác tốt hơn, Kiểm tra các bản sao trong danh sách bằng Set & tìm kiếm bản sao đầu tiênThay vì thêm tất cả các thành phần danh sách vào tập hợp và sau đó tìm kiếm các bản sao. Chúng ta có thể thêm từng phần tử vào danh sách và trong khi thêm kiểm tra xem nó có bị trùng hay không. e def checkIfDuplicates_2(listOfElems): ''' Check if given list contains any duplicates ''' setOfElems = set() for elem in listOfElems: if elem in setOfElems: return True else: setOfElems.add(elem) return False Bây giờ hãy sử dụng chức năng này để kiểm tra xem danh sách của chúng tôi có chứa bất kỳ bản sao nào hay không. e listOfElems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test'] result = checkIfDuplicates_2(listOfElems) if result: print('Yes, list contains duplicates') else: print('No duplicates found in list') đầu ra Yes, list contains duplicates Phân tích độ phức tạp của giải pháp này Trong trường hợp xấu nhất, chúng tôi sẽ thêm tất cả các thành phần của danh sách vào một tập hợp để thấy rằng danh sách của chúng tôi không chứa bất kỳ bản sao nào. Vì vậy, độ phức tạp trong trường hợp xấu nhất sẽ là n(log(n)) Hãy xem xét một giải pháp khác Kiểm tra xem danh sách có chứa các bản sao bằng danh sách không. đếm()Lớp danh sách của Python cung cấp một phương thức trả về tần suất đếm của một phần tử đã cho trong danh sách, list.count(element) Nó trả về số lần xuất hiện của phần tử trong danh sách Hãy sử dụng điều này để kiểm tra các bản sao, ________số 8_______Ở đây chúng tôi đang lặp lại tất cả các phần tử của danh sách và kiểm tra số lượng của từng phần tử trong danh sách. Nếu đếm > 1 thì có nghĩa là phần tử này có các mục trùng lặp Tìm các bản sao trong Danh sách Python và Xóa các bản sao khỏi biến danh sách Python là các tác vụ khá phổ biến. Và đó là vì Danh sách Python có xu hướng thu thập các bản sao trong đó. Kiểm tra xem có trùng lặp hay không trong một biến danh sách là một nhiệm vụ phổ biến đối với các lập trình viên Python May mắn thay, việc kiểm tra các bản sao trong Python tương đối dễ dàng. Và một khi bạn phát hiện ra chúng, bạn có thể thực hiện một số mục hành động
Nhưng trước khi chúng ta tìm hiểu sâu hơn về từng nhiệm vụ này, tốt hơn hết là bạn nên nhanh chóng hiểu danh sách là gì và tại sao các bản sao có thể tồn tại trong danh sách Python Tôi cũng muốn bạn biết về kiểu dữ liệu Set trong ngôn ngữ lập trình Python. Khi bạn biết điểm độc đáo và sự khác biệt của chúng, bạn sẽ đánh giá cao hơn các phương pháp được sử dụng để xác định và loại bỏ các bản sao khỏi danh sách Python Danh sách trong Python là gìMột danh sách trong Python giống như một mảng. Nó là một tập hợp các đối tượng, được lưu trữ trong một biến duy nhất. Một danh sách có thể thay đổi. Bạn có thể thêm hoặc xóa các phần tử khỏi danh sách Python. Một danh sách cũng có thể được sắp xếp. Nhưng theo mặc định, một danh sách không được sắp xếp Danh sách Python cũng có thể chứa các bản sao và nó cũng có thể chứa nhiều phần tử thuộc các loại dữ liệu khác nhau. Bằng cách này, bạn có thể lưu trữ số nguyên, số dấu chấm động, số dương hoặc số âm, chuỗi và thậm chí cả giá trị boolean trong danh sách Danh sách Python cũng có thể chứa các danh sách khác bên trong nó và có thể phát triển đến bất kỳ kích thước nào. Nhưng các danh sách được coi là chậm hơn trong việc truy cập các phần tử, so với Tuples. Vì vậy, một số phương pháp phù hợp hơn cho danh sách nhỏ và những phương pháp khác phù hợp hơn cho danh sách lớn. Nó phần lớn phụ thuộc vào kích thước danh sách Bạn xác định một danh sách bằng cách đặt các phần tử trong dấu ngoặc vuông. Mỗi phần tử được phân tách bằng dấu phẩy trong danh sách Tập hợp trong Python là gì?Tập hợp là một loại dữ liệu khác có sẵn trong Python. Tại đây, bạn cũng có thể lưu trữ nhiều mục trong một Bộ. Nhưng một bộ khác với danh sách python ở chỗ một bộ không thể chứa các bản sao Bạn có thể xác định Tập hợp bằng dấu ngoặc nhọn, so với danh sách, được xác định bằng cách sử dụng dấu ngoặc vuông Một Set trong Python không được sắp xếp hoặc lập chỉ mục. Có thể là mỗi khi bạn truy cập vào một chỉ mục cụ thể từ một tập hợp, bạn sẽ nhận được một giá trị khác Khi bạn đã tạo một Tập hợp trong Python, bạn có thể thêm các phần tử vào đó, nhưng bạn không thể thay đổi các phần tử hiện có Bây giờ bạn đã hiểu cơ bản về danh sách và hiểu về Đặt kiểu dữ liệu trong Python, chúng ta sẽ khám phá việc xác định và loại bỏ các bản sao trong Danh sách Python Nhiều cách để kiểm tra xem có tồn tại trùng lặp trong danh sách Python không
Chúng tôi sẽ sử dụng Python 3 làm ngôn ngữ. Vì vậy, miễn là bạn có bất kỳ phiên bản nào của trình biên dịch Python 3, bạn có thể sử dụng được Phương pháp 1. Sử dụng độ dài của danh sách để xác định xem nó có chứa các phần tử trùng lặp hay khôngHãy viết chương trình Python để kiểm tra điều này # this input list contains duplicates mylist = [5, 3, 5, 2, 1, 6, 6, 4] # 5 & 6 are duplicate numbers. # find the length of the list print(len(mylist)) 8 # create a set from the list myset = set(mylist) # find the length of the Python set variable myset print(len(myset)) 6 # create a set from the list myset = set(mylist) # find the length of the Python set variable myset print(len(myset)) 6 Như bạn có thể thấy, độ dài của biến mylist là 8 và độ dài của myset là 6 # create a set from the list myset = set(mylist) # find the length of the Python set variable myset print(len(myset)) đầu ra 6 Đây là chương trình Python cuối cùng – mã đầy đủ có thể được sao chép và dán vào chương trình Python và được sử dụng để kiểm tra xem các mục giống hệt nhau có tồn tại trong danh sách hay không # this input list contains duplicates mylist = [5, 3, 5, 2, 1, 6, 6, 4] # 5 & 6 are duplicate numbers. # find the length of the list print(len(mylist)) # create a set from the list myset = set(mylist) # find the length of the Python set variable myset print(len(myset)) # compare the length and print if the list contains duplicates if len(mylist) != len(myset): print("duplicates found in the list") else: print("No duplicates found in the list") đầu ra 8 6 duplicates found in the list Ngoài ra, chúng tôi có thể tạo một chức năng sẽ kiểm tra xem các mục trùng lặp có tồn tại hay không và sẽ trả về Đúng hoặc Sai để cảnh báo chúng tôi về các mục trùng lặp Đây là chức năng hoàn chỉnh để kiểm tra xem có tồn tại trùng lặp trong danh sách Python không def is_duplicate(anylist): if type(anylist) != 'list': return("Error. Passed parameter is Not a list") if len(anylist) != len(set(anylist)): return True else: return False mylist = [5, 3, 5, 2, 1, 6, 6, 4] # you can see some repeated number in the list. if is_duplicate(mylist): print("duplicates found in list") else: print("no duplicates found in list") Đầu ra của mã Python này là duplicates found in list Phương pháp 2. Liệt kê các bản sao trong một danh sách & Liệt kê các giá trị duy nhất – được sắp xếpTrong phương pháp này, chúng tôi sẽ tạo các danh sách khác nhau để sử dụng khác nhau - một danh sách có các khóa trùng lặp hoặc giá trị lặp lại và các danh sách khác nhau cho các khóa duy nhất. Một vài dòng mã có thể làm nên điều kỳ diệu trong chương trình Python # the given list contains duplicates mylist = [5, 3, 5, 2, 1, 6, 6, 4] # the original list of integers with duplicates newlist = [] # empty list to hold unique elements from the list duplist = [] # empty list to hold the duplicate elements from the list for i in mylist: if i not in newlist: newlist.append(i) else: duplist.append(i) # this method catches the first duplicate entries, and appends them to the list # The next step is to print the duplicate entries, and the unique entries print("List of duplicates", duplist) print("Unique Item List", newlist) # prints the final list of unique items đầu ra List of duplicates [5, 6] Unique Item List [5, 3, 2, 1, 6, 4] Và nếu bạn muốn sắp xếp các mục trong danh sách sau khi loại bỏ các mục trùng lặp, bạn có thể sử dụng hàm sẵn có có tên là sắp xếp trên danh sách các số # create a set from the list myset = set(mylist) # find the length of the Python set variable myset print(len(myset)) 60 đầu ra # create a set from the list myset = set(mylist) # find the length of the Python set variable myset print(len(myset)) 61 Phương pháp 3. Chỉ liệt kê các giá trị trùng lặp với Phương thức đếmPhương thức này lặp qua từng phần tử của toàn bộ danh sách và kiểm tra xem số lượng của từng phần tử có lớn hơn 1 không. Nếu có, mục đó được thêm vào một bộ. Nếu bạn nhớ, một bộ không thể chứa bất kỳ bản sao nào, theo thiết kế. Trong đoạn mã sau, đối với các mục tồn tại nhiều lần, chỉ những phần tử lặp lại đó mới được thêm vào tập hợp # create a set from the list myset = set(mylist) # find the length of the Python set variable myset print(len(myset)) 62 đầu ra # create a set from the list myset = set(mylist) # find the length of the Python set variable myset print(len(myset)) 63 Hãy nhớ rằng các giá trị trùng lặp được liệt kê có thể đã tồn tại một lần hoặc trước đó. Cách nhanh nhất để loại bỏ các bản sao khỏi danh sách PythonMột trong những cách nhanh nhất để loại bỏ trùng lặp là tạo một tập hợp từ biến danh sách. Tất cả điều này có thể được thực hiện chỉ trong một câu lệnh Python. Đây là phương pháp nhanh nhất, vì vậy nó phù hợp hơn với các danh sách lớn Đây là mã cuối cùng trong Python – có lẽ là cách tốt nhất… # create a set from the list myset = set(mylist) # find the length of the Python set variable myset print(len(myset)) 64 đầu ra # create a set from the list myset = set(mylist) # find the length of the Python set variable myset print(len(myset)) 65 Cách tránh trùng lặp trong danh sách PythonĐiều đầu tiên bạn phải nghĩ đến là – Tại sao tôi lại sử dụng một danh sách trong Python? Bởi vì nó có thể thu thập các bản sao. Nếu bạn hoàn toàn rõ ràng rằng không có bản sao nào tồn tại trong bất kỳ thứ gì bạn đang thu thập hoặc lưu trữ, thì đừng sử dụng danh sách. Thay vào đó, cách tốt hơn là sử dụng Set. Một bộ được xây dựng để từ chối trùng lặp, vì vậy đây là giải pháp tốt hơn. Bạn nên khám phá các bộ nhiều hơn một chút để hiểu rõ hơn về bộ. Nó có thể là một trình tiết kiệm thời gian thực vì đây là một cách hiệu quả hơn Nếu bạn không quan tâm đến thứ tự thì chỉ cần sử dụng set(mylist) sẽ thực hiện công việc loại bỏ mọi trùng lặp. Đây là những gì tôi sử dụng, ngay cả trong trường hợp xấu nhất khi toàn bộ danh sách đến là một danh sách bẩn gồm nhiều phần tử trùng lặp Ngoài ra, nếu bạn thực sự phải sử dụng danh sách vì những điều bạn có thể làm với kiểu dữ liệu danh sách, hãy thực hiện kiểm tra đơn giản trước khi thêm bất kỳ phần tử nào
Vì vậy, trước khi bạn thêm bất kỳ phần tử mới nào vào danh sách, chỉ cần kiểm tra nhanh sự tồn tại của giá trị. Nếu phần tử tồn tại, thì đừng lưu trữ nó. Đơn giản Các phương pháp được thảo luận ở trên hoạt động trên bất kỳ danh sách các phần tử nào. Vì vậy, nếu bạn muốn tìm các chuỗi trùng lặp hoặc số nguyên trùng lặp hoặc số thực trùng lặp hoặc bất kỳ loại đối tượng trùng lặp nào, bạn có thể sử dụng các chương trình Python này Hy vọng các cách khác nhau để tìm các bản sao, liệt kê chúng và cuối cùng loại bỏ hoàn toàn các phần tử trùng lặp khỏi bất kỳ danh sách Python nào bằng các chương trình và phương pháp đơn giản sẽ hữu ích cho việc xử lý và hiểu danh sách của bạn Vinai PrakashVinai là Founder & Master Trainer tại Intellisoft Training. Anh ấy viết về công nghệ, nâng cấp kỹ năng và thích chia sẻ các mẹo và thủ thuật của mình để cải thiện năng suất hàng ngày và hoàn thành nhiều việc hơn. Intellisoft cung cấp chứng chỉ ICDL, đào tạo Adobe CC, Microsoft Office tại Singapore. Chúng tôi là ATO của SSG và trung tâm kiểm tra ICDL được ủy quyền Để lại một câu trả lờiTìm kiếm Theo chúng tôiFacebook-f Youtube Bài viết gần đây
Bạn có mắc phải những lỗi trình bày này không?Đọc thêm "Câu hỏi thường gặp về Microsoft ExcelĐọc thêm "Sử dụng công cụ Rectangular Marquee trong PhotoshopĐọc thêm "Chuyển đổi bất kỳ ảnh nào sang đen trắng trong PhotoshopĐọc thêm "Infographics là gì?Đọc thêm "Thể loại
Hướng dẫn hàng tuầnthẻAdobe Photoshop Mẹo Adobe Photoshop Đào tạo Adobe Photoshop Nâng cao Excel Đào tạo lợi ích của giáo dục lợi ích của việc đào tạo nhân viên chức năng excel thông thường cơ bản về máy tính máy tính cho người mới bắt đầu công thức excel chức năng excel chức năng excel trục excel đào tạo excel khóa đào tạo excel chứng chỉ excel wsq đào tạo do chính phủ tài trợ tài trợ cho đào tạo như thế nào . quỹ đào tạo các hàm excel hữu ích vlookup trong Excel 2013 đào tạo vlookup Singapore các khóa học wda excel khóa học wda khóa học wsq khóa học wsq adobe Khóa học chứng nhận WSQ khóa học cấp chứng chỉ wsq khóa học wsq khóa học excel wsq tài trợ wsq tài trợ WSQ cho đào tạo photoshop |