Sao chép trong Python

Điểm chuẩn đầu tiên chỉ bao gồm một phạm vi nhỏ độ dài danh sách vì một số cách tiếp cận có hành vi

listOfElems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test']
4

Trong biểu đồ, trục y biểu thị thời gian, vì vậy giá trị thấp hơn có nghĩa là tốt hơn. Nó cũng được vẽ log-log để có thể hiển thị nhiều giá trị hơn

Loại bỏ các phương pháp tiếp cận

listOfElems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test']
4 Tôi đã thực hiện một điểm chuẩn khác lên đến nửa triệu phần tử trong một danh sách

Như bạn có thể thấy cách tiếp cận

listOfElems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test']
6 nhanh hơn bất kỳ cách tiếp cận nào khác và thậm chí việc xâu chuỗi
>>> from iteration_utilities import unique_everseen

>>> list[unique_everseen[duplicates[[1,1,2,1,2,3,4,2]]]]
[1, 2]
1 cũng nhanh hơn hoặc nhanh như nhau so với các cách tiếp cận khác

Một điều thú vị khác cần lưu ý ở đây là cách tiếp cận của gấu trúc rất chậm đối với các danh sách nhỏ nhưng có thể dễ dàng cạnh tranh để có được các danh sách dài hơn

Tuy nhiên, vì các điểm chuẩn này cho thấy hầu hết các phương pháp đều hoạt động gần như bằng nhau, nên việc sử dụng phương pháp nào không quan trọng [ngoại trừ 3 phương pháp có thời gian chạy

listOfElems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test']
4]

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

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,

  1. Thêm nội dung của danh sách trong một tập hợp
    • Vì tập hợp chỉ chứa các phần tử duy nhất nên sẽ không có phần tử trùng lặp nào được thêm vào tập hợp
  2. So sánh kích thước của tập hợp và danh sách
    • Nếu kích thước của danh sách & tập hợp bằng nhau thì có nghĩa là không có bản sao nào trong danh sách
    • Nếu kích thước của danh sách và tập hợp khác nhau thì có nghĩa là có, có các bản sao trong danh sách

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 ta có chứa bất kỳ bản sao nào hay không. e.
______3
Đầu ra
Yes, list contains duplicates

Phân tích độ phức tạp của giải pháp này.

quảng cáo

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ên

Thay 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 ta có chứa bất kỳ bản sao nào hay không. e.
______6
Đầu ra
Yes, list contains duplicates

Phân tích mức độ 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]].
Trong trường hợp tốt nhất, chúng ta sẽ biết về trùng lặp ngay khi chúng ta gặp nó trong quá trình lặp lại. Vì vậy, nó sẽ nhỏ hơn nhiều so với 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]

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,

def checkIfDuplicates_3[listOfElems]:
    ''' Check if given list contains any duplicates '''    
    for elem in listOfElems:
        if listOfElems.count[elem] > 1:
            return True
    return False

Ở đâ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.

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']
0
Đầu ra
Yes, list contains duplicates

Phân tích mức độ phức tạp của giải pháp này
Đây

Ví dụ hoàn chỉnh như sau,

def checkIfDuplicates_1[listOfElems]:
    ''' Check if given list contains any duplicates '''
    if len[listOfElems] == len[set[listOfElems]]:
        return False
    else:
        return True
1
Đầu ra.
______22

Hướng dẫn về Pandas -Tìm hiểu Phân tích dữ liệu với Python

 
  • Hướng dẫn Pandas Phần #1 - Giới thiệu về Phân tích dữ liệu với Python
  • Hướng dẫn Pandas Phần #2 - Khái niệm cơ bản về Pandas Series
  • Hướng dẫn Pandas Phần #3 - Nhận & Đặt giá trị Chuỗi
  • Pandas Tutorial Part #4 - Thuộc tính & phương thức của Pandas Series
  • Hướng dẫn về Pandas Phần #5 - Thêm hoặc xóa các thành phần của Pandas Series
  • Hướng dẫn về Pandas Phần #6 - Giới thiệu về DataFrame
  • Hướng dẫn về Pandas Phần #7 - DataFrame. loc[] - Chọn Hàng/Cột theo Lập chỉ mục
  • Hướng dẫn về Pandas Phần #8 - DataFrame. iloc[] - Chọn Hàng/Cột theo Tên nhãn
  • Hướng dẫn về gấu trúc Phần #9 - Lọc các hàng trong khung dữ liệu
  • Hướng dẫn Pandas Phần #10 - Thêm/Xóa Hàng & Cột DataFrame
  • Hướng dẫn về Pandas Phần #11 - Các thuộc tính & phương thức DataFrame
  • Hướng dẫn Pandas Phần #12 - Xử lý dữ liệu bị thiếu hoặc giá trị NaN
  • Hướng dẫn về Pandas Phần #13 - Lặp lại các Hàng & Cột của DataFrame
  • Hướng dẫn Pandas Phần #14 - Sắp xếp DataFrame theo Hàng hoặc Cột
  • Hướng dẫn về gấu trúc Phần #15 - Hợp nhất hoặc ghép các khung dữ liệu
  • Hướng dẫn về Pandas Phần #16 - DataFrame GroupBy được giải thích bằng các ví dụ
 

Bạn đang muốn tạo dựng sự nghiệp trong Khoa học dữ liệu với Python?

Khoa học dữ liệu là tương lai và tương lai là ở đây ngay bây giờ. Các nhà khoa học dữ liệu hiện là những chuyên gia được tìm kiếm nhiều nhất hiện nay. Để trở thành một Nhà khoa học dữ liệu giỏi hoặc để chuyển đổi nghề nghiệp trong Khoa học dữ liệu, người ta phải sở hữu bộ kỹ năng phù hợp. Chúng tôi đã tuyển chọn danh sách Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python. Các khóa học này sẽ dạy cho bạn các công cụ lập trình cho Khoa học dữ liệu như Pandas, NumPy, Matplotlib, Seaborn và cách sử dụng các thư viện này để triển khai các mô hình Máy học

Kiểm tra Đánh giá chi tiết về Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python

Hãy nhớ rằng, Khoa học dữ liệu đòi hỏi rất nhiều kiên nhẫn, bền bỉ và thực hành. Vì vậy, hãy bắt đầu học ngay hôm nay

Python có thể đặt trùng lặp không?

Bộ là tập hợp các mục không có thứ tự. Mỗi phần tử tập hợp là duy nhất [ không trùng lặp ] và phải bất biến [không thể thay đổi].

Cái nào cho phép trùng lặp trong Python?

Tuple là tập hợp được sắp xếp theo thứ tự và không thể thay đổi. Cho phép các thành viên trùng lặp.

Danh sách có thể trùng lặp trong Python không?

Danh sách Python có thể chứa các phần tử trùng lặp .

Làm cách nào để tìm bản sao trong gấu trúc?

duplicated[] của Pandas. .
cú pháp. Khung dữ liệu. trùng lặp [tập hợp con = Không, giữ = 'đầu tiên']
Thông số
tập hợp con. Cái này lấy một cột hoặc danh sách nhãn cột. Giá trị mặc định của nó là Không có. .
giữ cho. Điều này Kiểm soát cách xem xét giá trị trùng lặp. Nó chỉ có ba giá trị riêng biệt và mặc định là 'đầu tiên'

Chủ Đề