Hướng dẫn which allows duplicates in python? - cái nào cho phép trùng lặp trong python?

Tôi gặp phải một vấn đề liên quan đến Set trong Python 2.7.

Đây là khối mã ví dụ thích hợp:

letters = set[str[raw_input["Type letters: "]]]

Như bạn có thể thấy, vấn đề là viết một số chữ cái để gán cho "chữ cái" để sử dụng sau. Nhưng nếu tôi gõ "AAABBCDD", đầu ra của "chữ cái" sẽ trả về

set[['a', 'c', 'b', 'd']]

Câu hỏi của tôi là làm thế nào để viết mã, để đầu ra sẽ cho phép các bản sao như thế này:

set[['a','a','a','b','b','c','d','d']]

?

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 danh sách có chứa bất kỳ yếu tố trùng lặp nào hay không.

Giả sử chúng ta có một danh sách các yếu tố, tức là.

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 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 bản sao trong danh sách bằng cách sử dụng tập hợp và bằng cách so sánh kích thước

Để kiểm tra xem danh sách có chứa bất kỳ phần tử trùng lặp nào, hãy làm theo các bước sau không,

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

Chúng tôi đã tạo ra một hàm tuân theo Algo trên, tức là.

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.

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 Đây là giải pháp không hiệu quả nhất cho đến nay với độ phức tạp O [n^2]

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

Danh sách có cho phép trùng lặp trong Python không?n[log[n]]. Comparing size is a O[1] operation. So, complexity of this solution is n[log[n]].

Danh sách Python có thể chứa các yếu tố trùng lặp.n[log[n]] because we are just adding all the elements from list to set.

Các bộ dữ liệu có cho phép trùng lặp không?

Các mục Tuple được đặt hàng, không thể thay đổi và cho phép các giá trị trùng lặp. Các mục Tuple được lập chỉ mục, mục đầu tiên có chỉ mục [0], mục thứ hai có chỉ mục [1], v.v.

Dữ liệu trùng lặp có được phép trong Set Python không?

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.

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 Đây là giải pháp không hiệu quả nhất cho đến nay với độ phức tạp O [n^2]

Ví dụ hoàn chỉnh như sau,worst case complexity will be n[log[n]].
In best case, we will get to know about duplicate as soon as we encounter it during iteration. So, it will be much lesser than n[log[n]].

Hãy cùng nhìn vào 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.count []

Lớp danh sách Python cung cấp một phương thức trả về số lượng tần số của một phần tử nhất định trong danh sách,

set[['a', 'c', 'b', 'd']]
0

Nó trả về số lượng phần tử xuất hiện trong danh sách.

Hãy để sử dụng điều này để kiểm tra các bản sao,

set[['a', 'c', 'b', 'd']]
1

Ở đây chúng tôi đang lặp lại tất cả các yếu tố của danh sách và kiểm tra số lượng của từng yếu tố trong danh sách. Nếu đếm> 1 thì điều đó 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.

set[['a', 'c', 'b', 'd']]
2

Đầu ra

Yes, list contains duplicates

Phân tích độ phức tạp của giải pháp này Đây là giải pháp không hiệu quả nhất cho đến nay với độ phức tạp O [n^2]
This is the most inefficient solution till now with complexity O[n^2]

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

set[['a', 'c', 'b', 'd']]
4

Output:

set[['a', 'c', 'b', 'd']]
5

Danh sách có cho phép trùng lặp trong Python không?

Danh sách Python có thể chứa các yếu tố trùng lặp..

Các bộ dữ liệu có cho phép trùng lặp không?

Các mục Tuple được đặt hàng, không thể thay đổi và cho phép các giá trị trùng lặp.Các mục Tuple được lập chỉ mục, mục đầu tiên có chỉ mục [0], mục thứ hai có chỉ mục [1], v.v.allow duplicate values. Tuple items are indexed, the first item has index [0] , the second item has index [1] etc.

Dữ liệu trùng lặp có được phép trong Set Python không?

Loại tập hợp tích hợp của Python có các đặc điểm sau: Các bộ không được đặt hàng.Đặt các yếu tố là duy nhất.Các yếu tố trùng lặp không được phép.Duplicate elements are not allowed.

Loại dữ liệu nào trong Python không cho phép trùng lặp?

Lấy đi.Một bộ là duy nhất trong Python.Nó không cho phép trùng lặp.A set is unique in Python. It does not allow duplicates.

Chủ Đề