Hướng dẫn can you have duplicate values in a list python? - bạn có thể có các giá trị trùng lặp trong danh sách python không?

Tìm các bản sao trong danh sách Python và loại bỏ các bản sao khỏi biến danh sách Python là các nhiệm vụ khá phổ biến. Và điều đó bởi vì danh sách Python có xu hướng thu thập các bản sao trong đó. Kiểm tra xem có sao chép hay không trong một biến danh sách là một nhiệm vụ chung cho các lập trình viên Python.

May mắn thay, nó tương đối dễ dàng để kiểm tra các bản sao trong Python. 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

  • Chỉ liệt kê các giá trị trùng lặp
  • Xóa các giá trị trùng lặp và tạo một danh sách mới mà không có bất kỳ bản sao nào
  • Thay đổi danh sách hiện tại bằng cách chỉ xóa các bản sao, về cơ bản là lặp lại danh sách hiện có.
  • Chỉ cần đánh giá danh sách cho các bản sao và báo cáo nếu có các bản sao trong danh sách này.
  • Đếm các bản sao trong danh sách.

Nhưng trước khi chúng ta đi sâu hơn vào từng nhiệm vụ này, tốt hơn là 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 đã đặt trong ngôn ngữ lập trình Python. Khi bạn biết điểm độc đáo của họ 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à xóa 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 yếu 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.

Một 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 yếu tố của 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ố điểm nổi, tích cực hoặc tiêu cực, chuỗi và thậm chí các giá trị boolean trong một danh sách.

Danh sách Python cũng có thể chứa các danh sách khác trong đó và có thể phát triển đến mọi kích thước. Nhưng danh sách được coi là chậm hơn trong việc truy cập các yếu tố, so với các bộ dữ liệu. Vì vậy, một số phương pháp phù hợp hơn cho các danh sách nhỏ và các phương pháp khác tốt 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 yếu tố trong dấu ngoặc vuông. Mỗi yếu tố được phân tách bằng dấu phẩy trong danh sách.

Một bộ trong Python là gì?

Một bộ là một loại dữ liệu khác có sẵn trong Python. Ở đây bạn cũng có thể lưu trữ nhiều mục trong một bộ. Nhưng một tập hợp khác với danh sách Python ở chỗ một tập hợp không thể chứa các bản sao.

Bạn có thể xác định một tập hợp có niềng răng xoă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 bộ trong Python không được đặt hàng hoặc lập chỉ mục. Có thể mỗi khi bạn truy cập một chỉ mục cụ thể từ một bộ, bạn sẽ nhận được một giá trị khác nhau.

Khi bạn đã tạo một bộ trong Python, bạn có thể thêm các yếu tố vào nó, nhưng bạn có thể thay đổi các yếu tố hiện có.

Bây giờ bạn có một danh sách cơ bản hiểu và đặt sự hiểu biết về kiểu dữ liệu trong Python, chúng tôi sẽ khám phá việc nhận dạng và loại bỏ các bản sao trong danh sách Python.

Nhiều cách để kiểm tra xem các bản sao có tồn tại trong danh sách Python không

  • Độ dài danh sách & độ dài của bộ khác nhau
  • Kiểm tra từng phần tử trong tập. Nếu có, DUP, nếu không, hãy nối thêm.
  • Kiểm tra danh sách.count () cho mỗi phần tử

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 rất tốt để đi.

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 không.

Hã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 MySet là 6.

# create a set from the list
myset = set(mylist)

# find the length of the Python set variable myset
print(len(myset))

Output:

6

Tại đây, 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 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")

Output:

8
6
duplicates found in the list

Ngoài ra, chúng ta 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 ta về các bản sao.

Ở đây chức năng hoàn chỉnh để kiểm tra xem các bản sao có tồn tại 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 danh sách và liệt kê các giá trị duy nhất - được sắp xếp

Trong phương thức này, chúng tôi sẽ tạo các danh sách khác nhau cho các mục đích sử dụng khác nhau - một để 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 phép thuật trong một 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

Output:

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 danh sách sau khi xóa các bản sao, bạn có thể sử dụng hàm sẵn có được gọi là sắp xếp trong 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))
6
0

Output:

# create a set from the list
myset = set(mylist)

# find the length of the Python set variable myset
print(len(myset))
6
1

Phương pháp 3: Chỉ liệt kê các giá trị trùng lặp với phương thức đếm

Phương thức này lặp lại trên mỗi 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ử lớn hơn 1. Nếu có, mục đó được thêm vào một tập hợp. Nếu bạn nhớ, một bộ không thể chứa bất kỳ bản sao, theo thiết kế. Trong 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 đượ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))
6
2

Output:

# create a set from the list
myset = set(mylist)

# find the length of the Python set variable myset
print(len(myset))
6
3

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 đêm trước

Cách nhanh nhất để loại bỏ các bản sao khỏi danh sách Python

Một trong những cách nhanh nhất để loại bỏ các bản sao là tạo một bộ từ biến danh sách. Tất cả điều này có thể được thực hiện chỉ trong một tuyên bố Python duy nhất. Đây là phương pháp nhanh nhất, vì vậy nó phù hợp hơn cho các danh sách lớn.

Tại đây, 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))
6
4

Output:

# create a set from the list
myset = set(mylist)

# find the length of the Python set variable myset
print(len(myset))
6
5

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?Why am I using a list in 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 các bản sao don don tồn tại trong bất cứ điều gì bạn đang thu thập hoặc lưu trữ, thì don don sử dụng một danh sách. Thay vào đó, một cách tốt hơn là sử dụng một bộ. Một bộ được xây dựng để từ chối các bản sao, vì vậy đây là một giải pháp tốt hơn. Bạn nên khám phá bộ nhiều hơn một chút để đạt được sự hiểu biết tốt hơn. 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 đơn đặt hàng thì chỉ cần sử dụng Set (Mylist) sẽ thực hiện công việc loại bỏ bất kỳ bản sao nào. Đây là những gì tôi sử dụng, ngay cả trong trường hợp xấu nhất trong đó toàn bộ danh sách đến là danh sách bẩn gồm nhiều yếu 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, thì hãy kiểm tra đơn giản trước khi bạn thêm bất kỳ yếu tố nào.

Ví dụ: bạn có thể sắp xếp một danh sách, nhưng không phải là một bộ trong Python. Nó có thể hữu ích cho danh sách lớn.you can sort a list, but not a Set in Python. It can be useful for large lists.

Vì vậy, trước khi bạn thêm bất kỳ phần tử mới nào trong danh sách, chỉ cần kiểm tra nhanh sự tồn tại của giá trị. Nếu yếu tố tồn tại, thì don don lưu trữ nó. Giản dị!

Các phương pháp được thảo luận ở trên công việc trên bất kỳ danh sách các yếu tố. Vì vậy, nếu bạn muốn tìm các chuỗi trùng lặp hoặc các số nguyên nhân đôi hoặc các số nổi 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 bản sao, liệt kê chúng và cuối cùng loại bỏ hoàn toàn các yếu 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 thức đơn giản sẽ có ích để xử lý và hiểu danh sách của bạn.