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

Danh sách Python là một tập hợp các đối tượng được sắp xếp theo thứ tự, không có chỉ mục và có thể thay đổi. Chúng tôi tạo nó bằng cách đặt các đối tượng có kiểu dữ liệu giống hoặc khác nhau bên trong dấu ngoặc vuông được phân tách bằng dấu phẩy. Để xem lại cách thức hoạt động của Danh sách Python, vui lòng tham khảo hướng dẫn DataQuest này

Xóa các mục trùng lặp khỏi danh sách là một bước tiền xử lý dữ liệu quan trọng — ví dụ: xác định những khách hàng duy nhất đã mua hàng từ cửa hàng quà tặng trong tháng trước để nhận khuyến mại. Một số khách hàng có thể đã mua quà tặng từ cửa hàng nhiều lần trong tháng qua và tên của họ sẽ xuất hiện nhiều lần khi họ ghé thăm cửa hàng

Trong hướng dẫn này, chúng ta sẽ tìm hiểu các phương pháp khác nhau để loại bỏ các bản sao khỏi Danh sách Python

1. Sử dụng từ khóa
    ['Python', 'R', 'C#', 'Java']
2

Chúng tôi sử dụng từ khóa

    ['Python', 'R', 'C#', 'Java']
2 để xóa các đối tượng khỏi danh sách với vị trí chỉ mục của chúng. Chúng tôi sử dụng phương pháp này khi kích thước của danh sách nhỏ và không có nhiều phần tử trùng lặp. Ví dụ: một lớp gồm sáu sinh viên được hỏi về ngôn ngữ lập trình yêu thích của họ và câu trả lời của họ được lưu vào danh sách
    ['Python', 'R', 'C#', 'Java']
4. Một số sinh viên ưa thích cùng một ngôn ngữ lập trình, vì vậy chúng tôi có các bản sao trong danh sách
    ['Python', 'R', 'C#', 'Java']
4 mà chúng tôi sẽ xóa bằng cách sử dụng từ khóa
    ['Python', 'R', 'C#', 'Java']
2

students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

# Remove the `Python` duplicate with its index number: 3
del students[3]

print[students]
    ['Python', 'R', 'C#', 'R', 'Java']
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
    ['Python', 'R', 'C#', 'Java']

Chúng tôi đã xóa thành công các mục trùng lặp khỏi danh sách. Nhưng tại sao chúng tôi lại sử dụng chỉ số 3 hai lần? . Danh sách Python không được lập chỉ mục. Phần tử đầu tiên trong danh sách có chỉ số là 0 và phần tử cuối cùng có chỉ số là 5. Bản sao

    ['Python', 'R', 'C#', 'Java']
9 có chỉ số là 3. Sau khi xóa
    ['Python', 'R', 'C#', 'Java']
9 trùng lặp,
    ['Python', 'R', 'C#', 'Java']
7 của danh sách
    ['Python', 'R', 'C#', 'Java']
4 bị giảm đi 1. Phần tử sau bản sao
    ['Python', 'R', 'C#', 'Java']
9 hiện đảm nhận vị trí chỉ mục của nó. Đây là lý do tại sao chỉ mục
    ['Python', 'R', 'C#', 'Java']
64 trùng lặp thay đổi từ 4 thành 3. Nhược điểm của việc sử dụng phương pháp này là chúng tôi phải theo dõi các chỉ số của bản sao, chúng liên tục thay đổi. Điều này sẽ khó khăn cho một danh sách rất lớn

Tiếp theo, chúng tôi sẽ xóa các mục trùng lặp khỏi danh sách hiệu quả hơn bằng cách sử dụng

    ['Python', 'R', 'C#', 'Java']
65

2. Sử dụng
    ['Python', 'R', 'C#', 'Java']
65

Chúng tôi sử dụng

    ['Python', 'R', 'C#', 'Java']
65 để lặp lại một lần lặp. ví dụ: Danh sách Python. Để có người giới thiệu về cách hoạt động của
    ['Python', 'R', 'C#', 'Java']
65, vui lòng tham khảo hướng dẫn về vòng lặp này trên blog DataQuest

Để loại bỏ trùng lặp bằng cách sử dụng

    ['Python', 'R', 'C#', 'Java']
65, trước tiên bạn tạo một danh sách trống mới. Sau đó, bạn lặp lại các phần tử trong danh sách chứa các bản sao và chỉ nối thêm lần xuất hiện đầu tiên của mỗi phần tử trong danh sách mới. Đoạn mã dưới đây cho biết cách sử dụng
    ['Python', 'R', 'C#', 'Java']
65 để xóa các bản sao khỏi danh sách
    ['Python', 'R', 'C#', 'Java']
4

    ['Python', 'R', 'C#', 'Java']
6
    ['Python', 'R', 'C#', 'Java']

thì đấy. Chúng tôi đã loại bỏ thành công các bản sao mà không phải theo dõi các chỉ số của phần tử. Phương pháp này có thể giúp chúng tôi loại bỏ các bản sao trong một danh sách lớn. Tuy nhiên, điều này đòi hỏi rất nhiều mã. Nên có một cách đơn giản hơn để làm điều này. Đoán nào?

hiểu danh sách. Chúng tôi sẽ đơn giản hóa đoạn mã trên bằng cách sử dụng khả năng hiểu danh sách trong ví dụ tiếp theo

    ['Python', 'R', 'C#', 'Java']
6
    ['Python', 'R', 'C#', 'Java']

Chúng tôi đã hoàn thành công việc với ít dòng mã hơn. Chúng ta có thể kết hợp

    ['Python', 'R', 'C#', 'Java']
65 với các hàm
    ['Python', 'R', 'C#', 'Java']
3 và
    ['Python', 'R', 'C#', 'Java']
4 để viết các đoạn mã kỳ lạ nhằm loại bỏ các bản sao. Ý tưởng đằng sau cách các mã này hoạt động giống như trong các ví dụ được hiển thị ở trên

Tiếp theo, chúng ta sẽ xem cách xóa các mục trùng lặp khỏi danh sách mà không cần lặp lại bằng cách sử dụng

    ['Python', 'R', 'C#', 'Java']
5

3. Sử dụng
    ['Python', 'R', 'C#', 'Java']
5

Bộ trong Python là tập hợp các phần tử duy nhất không có thứ tự. Về bản chất, các bản sao không được phép. Do đó, chuyển đổi một danh sách thành một tập hợp sẽ loại bỏ các bản sao. Thay đổi tập hợp thành danh sách sẽ tạo ra danh sách mới không trùng lặp

Ví dụ sau đây cho thấy cách loại bỏ các mục trùng lặp khỏi danh sách

    ['Python', 'R', 'C#', 'Java']
4 bằng cách sử dụng
    ['Python', 'R', 'C#', 'Java']
5

    ['Python', 'R', 'C#', 'Java']
5
    ['Python', 'R', 'C#', 'Java']
6

Lưu ý rằng thứ tự của các phần tử trong danh sách khác với các ví dụ trước của chúng tôi. Điều này là do một

    ['Python', 'R', 'C#', 'Java']
5 không giữ trật tự. Tiếp theo, chúng ta sẽ xem cách xóa các mục trùng lặp khỏi danh sách bằng từ điển

4. Sử dụng
    ['Python', 'R', 'C#', 'Java']
60

Từ điển Python là tập hợp các cặp khóa-giá trị với yêu cầu khóa phải là duy nhất. Vì vậy, chúng tôi sẽ xóa các bản sao trong Danh sách Python nếu chúng tôi có thể biến các thành phần của danh sách thành các khóa của từ điển. Chúng tôi không thể chuyển đổi danh sách

    ['Python', 'R', 'C#', 'Java']
4 đơn giản thành từ điển vì từ điển được tạo bằng cặp khóa-giá trị. Chúng tôi gặp lỗi sau nếu cố gắng chuyển đổi danh sách
    ['Python', 'R', 'C#', 'Java']
4 thành từ điển

    ['Python', 'R', 'C#', 'R', 'Java']
0
    ['Python', 'R', 'C#', 'R', 'Java']
1

Tuy nhiên, chúng tôi có thể tạo một từ điển từ một danh sách các bộ dữ liệu - sau đó chúng tôi sẽ lấy các khóa duy nhất của từ điển và chuyển đổi chúng thành một danh sách. Một cách véc tơ để lấy danh sách các bộ dữ liệu từ danh sách

    ['Python', 'R', 'C#', 'Java']
4 là sử dụng hàm map

    ['Python', 'R', 'C#', 'R', 'Java']
2
    ['Python', 'R', 'C#', 'R', 'Java']
3

Trong khối mã trên, mọi phần tử trong danh sách

    ['Python', 'R', 'C#', 'Java']
4 được chuyển qua hàm
    ['Python', 'R', 'C#', 'Java']
65 để tạo một bộ,
    ['Python', 'R', 'C#', 'Java']
66. Khi danh sách các bộ dữ liệu được thay đổi thành từ điển, phần tử đầu tiên trong bộ dữ liệu là khóa và phần tử thứ hai là giá trị. Các khóa duy nhất lấy từ từ điển bằng phương pháp
    ['Python', 'R', 'C#', 'Java']
67 và được thay đổi thành danh sách

    ['Python', 'R', 'C#', 'R', 'Java']
4
    ['Python', 'R', 'C#', 'R', 'Java']
5____66
    ['Python', 'R', 'C#', 'R', 'Java']
7

Phương thức

    ['Python', 'R', 'C#', 'Java']
68 chuyển đổi danh sách thành danh sách bộ dữ liệu và danh sách bộ dữ liệu thành từ điển trong một lần. Sau đó, chúng tôi có thể lấy các khóa từ điển duy nhất và chuyển đổi chúng thành danh sách. Tuy nhiên, chúng tôi đã sử dụng phương pháp
    ['Python', 'R', 'C#', 'Java']
69 để lấy các khóa duy nhất từ ​​từ điển trước khi chuyển đổi thành danh sách. Điều này không thực sự cần thiết. Theo mặc định, các thao tác trên từ điển như lặp lại và chuyển đổi thành danh sách sử dụng các khóa từ điển

    ['Python', 'R', 'C#', 'R', 'Java']
8
    ['Python', 'R', 'C#', 'R', 'Java']
9

4. Sử dụng
    ['Python', 'R', 'C#', 'Java']
0 và
    ['Python', 'R', 'C#', 'Java']
1

Chúng tôi có thể xóa các bản sao khỏi danh sách Python bằng cách sử dụng các lớp con từ điển như

    ['Python', 'R', 'C#', 'Java']
0 và
    ['Python', 'R', 'C#', 'Java']
1. Cả
    ['Python', 'R', 'C#', 'Java']
0 và
    ['Python', 'R', 'C#', 'Java']
1 đều hoạt động theo cùng một cách. Chúng là các bộ sưu tập trong đó các phần tử duy nhất là các khóa từ điển và số lần xuất hiện của chúng là các giá trị. Như trong một từ điển, danh sách không trùng lặp đến từ các khóa từ điển

# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
0
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
1
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
2
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
3

5. Sử dụng
    ['Python', 'R', 'C#', 'Java']
6 và
    ['Python', 'R', 'C#', 'Java']
7

Cả

    ['Python', 'R', 'C#', 'Java']
6 và
    ['Python', 'R', 'C#', 'Java']
7 đều lấy một danh sách trùng lặp và trả về một mảng duy nhất gồm các phần tử trong danh sách. Các mảng kết quả được chuyển đổi thành danh sách. Trong khi
    ['Python', 'R', 'C#', 'Java']
7 sắp xếp các phần tử duy nhất theo thứ tự tăng dần, thì
    ['Python', 'R', 'C#', 'Java']
6 duy trì thứ tự của các phần tử trong danh sách

# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
4
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
5

Đăng kí. Cửa hàng quà tặng được xem lại

Trong phần này, chúng ta sẽ xem lại hình minh họa cửa hàng quà tặng của mình. Cửa hàng quà tặng nằm trong khu dân cư 50 người. Trung bình có 10 người mua hàng từ cửa hàng mỗi ngày và cửa hàng mở cửa 10 ngày một tháng. Bạn đã nhận được một danh sách chứa tên của những khách hàng đã mua hàng từ cửa hàng trong tháng trước và nhiệm vụ của bạn là lấy tên của những khách hàng duy nhất cho một ưu đãi khuyến mại

# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
6
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
7

Trong khối mã trên, chúng tôi đã tạo ngẫu nhiên những khách hàng đã mua hàng từ cửa hàng trong tháng qua dưới dạng danh sách danh sách. Chúng tôi muốn có được những khách hàng duy nhất đã mua hàng từ cửa hàng mỗi tháng, vì vậy chúng tôi sẽ tạo hàm

    ['Python', 'R', 'C#', 'Java']
52 cho tác vụ này

Chúng tôi đã bao gồm các loại dữ liệu đầu vào và đầu ra tùy chọn. Python là ngôn ngữ lập trình được gõ động và xử lý ngầm điều này trong thời gian chạy. Tuy nhiên, thật hữu ích khi hiển thị các kiểu dữ liệu đầu vào và đầu ra cho các cấu trúc dữ liệu phức tạp. Ngoài ra, chúng ta có thể mô tả đầu vào và đầu ra của hàm bằng một

    ['Python', 'R', 'C#', 'Java']
53.
    ['Python', 'R', 'C#', 'Java']
54 cho chúng ta biết rằng tham số
    ['Python', 'R', 'C#', 'Java']
55 là một danh sách chứa các danh sách có chuỗi và
    ['Python', 'R', 'C#', 'Java']
56 cho chúng ta biết rằng hàm trả về một danh sách chứa các bộ dữ liệu có một chuỗi và một số nguyên

# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
8
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
9

Tên của các khách hàng được tạo ngẫu nhiên — tên của bạn có thể khác nếu bạn không sử dụng cùng một giá trị

    ['Python', 'R', 'C#', 'Java']
57. Tên của các khách hàng duy nhất trong
    ['Python', 'R', 'C#', 'Java']
58 xuất phát từ việc đầu tiên chuyển đổi danh sách các bộ thành từ điển và sau đó chuyển đổi các khóa từ điển thành danh sách

    ['Python', 'R', 'C#', 'Java']
0
    ['Python', 'R', 'C#', 'Java']
1

Phần kết luận

Trong hướng dẫn này, chúng ta đã học cách xóa các bản sao khỏi Danh sách Python. Chúng tôi đã học cách loại bỏ trùng lặp bằng từ khóa

    ['Python', 'R', 'C#', 'Java']
2 cho danh sách nhỏ. Đối với các danh sách lớn hơn, chúng tôi thấy rằng sử dụng
    ['Python', 'R', 'C#', 'Java']
65 và các phương pháp hiểu danh sách hiệu quả hơn so với sử dụng từ khóa
    ['Python', 'R', 'C#', 'Java']
2. Hơn nữa, chúng tôi đã biết rằng các giá trị của
    ['Python', 'R', 'C#', 'Java']
5 và các khóa của từ điển là duy nhất, điều này làm cho chúng phù hợp để loại bỏ các bản sao khỏi danh sách. Cuối cùng, chúng tôi đã biết rằng các lớp con từ điển loại bỏ các bản sao khỏi danh sách theo cách tương tự như từ điển và chúng tôi đã thấy các phương thức NumPy và pandas để lấy các phần tử duy nhất từ ​​​​danh sách

hướng dẫn python

Giới thiệu về tác giả

Aghogho Monorien

Aghogho là một kỹ sư và Quant đầy tham vọng làm việc về các ứng dụng của trí tuệ nhân tạo trong tài chính

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

Tuple mục được sắp xếp theo thứ tự, 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.

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

Phương pháp 3. Sử dụng bộ[] . Điều này là do cấu trúc dữ liệu đã đặt không cho phép trùng lặp

Bộ nào cho phép trùng lặp?

ArrayList cho phép giá trị trùng lặp trong khi HashSet không cho phép giá trị trùng lặp. đặt hàng. ArrayList duy trì thứ tự của đối tượng mà chúng được chèn vào trong khi HashSet là một bộ sưu tập không có thứ tự và không duy trì bất kỳ thứ tự nào.

Từ điển có cho phép trùng lặp trong Python không?

Từ điển. Từ điển được sử dụng để lưu trữ các giá trị dữ liệu trong khóa. cặp giá trị. Từ điển là một bộ sưu tập được sắp xếp theo thứ tự*, có thể thay đổi và không cho phép trùng lặp .

Chủ Đề