Python xóa các bản sao khỏi danh sách

Mục lục:

Anonim

Danh sách là một vùng chứa chứa các đối tượng Python khác nhau, có thể là số nguyên, từ, giá trị, v.v. Nó tương đương với một mảng trong các ngôn ngữ lập trình khác.

Vì vậy, ở đây sẽ đi qua các cách khác nhau mà chúng ta có thể xóa các bản sao khỏi một danh sách nhất định.

Trong hướng dẫn này, bạn sẽ học:

  • Xóa các bản sao khỏi danh sách bằng cách sử dụng Set
  • Loại bỏ các bản sao khỏi danh sách bằng cách sử dụng Danh sách tạm thời.
  • Xóa các bản sao khỏi danh sách bằng Dict
  • Xóa các bản sao khỏi danh sách bằng vòng lặp for
  • Xóa các bản sao khỏi danh sách bằng cách sử dụng tính năng hiểu danh sách
  • Loại bỏ các bản sao khỏi danh sách bằng phương thức Numpy unique ().
  • Xóa các bản sao khỏi danh sách bằng phương pháp Pandas
  • Loại bỏ các bản sao bằng cách sử dụng enumerate () và khả năng hiểu danh sách

Xóa các bản sao khỏi danh sách bằng cách sử dụng Set

Để xóa các bản sao khỏi danh sách, bạn có thể sử dụng hàm tích hợp set (). Đặc biệt của phương thức set () là nó trả về các phần tử riêng biệt.

Ta có danh sách: [1,1,2,3,2,2,4,5,6,2,1]. Danh sách có nhiều bản sao mà chúng tôi cần loại bỏ và chỉ lấy lại các phần tử riêng biệt. Danh sách được cung cấp cho hàm tích hợp set (). Sau đó, danh sách cuối cùng được hiển thị bằng cách sử dụng hàm tích hợp list (), như thể hiện trong ví dụ bên dưới.

Đầu ra mà chúng ta nhận được là các phần tử riêng biệt trong đó tất cả các phần tử trùng lặp đều bị loại bỏ.

my_list = [1,1,2,3,2,2,4,5,6,2,1]my_final_list = set(my_list)print(list(my_final_list))

Đầu ra:

[1, 2, 3, 4, 5, 6]

Loại bỏ các bản sao khỏi danh sách bằng cách sử dụng Danh sách tạm thời

Để xóa các bản sao khỏi một danh sách nhất định, bạn có thể sử dụng một danh sách tạm thời trống. Đầu tiên, bạn sẽ phải lặp lại danh sách có trùng lặp và thêm các mục duy nhất vào danh sách tạm thời. Sau đó danh sách tạm thời được gán cho danh sách chính.

Đây là một ví dụ làm việc bằng cách sử dụng danh sách tạm thời.

my_list = [1, 2, 3, 1, 2, 4, 5, 4 ,6, 2]print("List Before ", my_list)temp_list = []for i in my_list:if i not in temp_list:temp_list.append(i)my_list = temp_listprint("List After removing duplicates ", my_list)

Đầu ra:

List Before [1, 2, 3, 1, 2, 4, 5, 4, 6, 2]List After removing duplicates [1, 2, 3, 4, 5, 6]

Xóa các bản sao khỏi danh sách bằng Dict

Chúng tôi có thể xóa các bản sao khỏi danh sách đã cho bằng cách nhập OrderedDict từ các bộ sưu tập. Nó có sẵn từ python2.7 trở đi. OrderedDict sẽ trả lại cho bạn các phần tử riêng biệt theo thứ tự mà khóa hiện diện.

Hãy để chúng tôi sử dụng một danh sách và sử dụng phương thức fromkeys () có sẵn trong OrderedDict để lấy các phần tử duy nhất từ ​​danh sách.

Để sử dụng phương thức OrderedDict.fromkey (), bạn phải nhập OrderedDict từ các bộ sưu tập, như được hiển thị bên dưới:

from collections import OrderedDict

Đây là một ví dụ để loại bỏ các bản sao bằng phương thức OrderedDict.fromkeys ().

from collections import OrderedDictmy_list = ['a','x','a','y','a','b','b','c']my_final_list = OrderedDict.fromkeys(my_list)print(list(my_final_list))

Đầu ra:

['a', 'x', 'y', 'b', 'c']

Từ Python 3.5+ trở đi, chúng ta có thể sử dụng dict.fromkeys () thông thường để lấy các phần tử riêng biệt từ danh sách. Các phương thức dict.fromkeys () trả về các khóa là duy nhất và giúp loại bỏ các giá trị trùng lặp.

Một ví dụ cho thấy hoạt động của dict.fromkeys () trên danh sách để cung cấp các mục duy nhất như sau:

my_list = ['a','x','a','y','a','b','b','c']my_final_list = dict.fromkeys(my_list)print(list(my_final_list))

Đầu ra:

['a', 'x', 'y', 'b', 'c']

Xóa các bản sao khỏi danh sách bằng vòng lặp for

Sử dụng vòng lặp for, chúng tôi sẽ duyệt qua danh sách các mục để loại bỏ các bản sao.

Đầu tiên hãy khởi tạo mảng để trống tức là myFinallist = []. Bên trong vòng lặp for, thêm vào kiểm tra xem các mục trong danh sách có tồn tại trong mảng myFinallist không. Nếu các mục không tồn tại, hãy thêm mục vào mảng myFinallist bằng cách sử dụng append () phương pháp.

Vì vậy, bất cứ khi nào gặp phải mục trùng lặp, nó sẽ hiện diện trong mảng myFinallist và sẽ không được chèn vào. Bây giờ chúng ta hãy kiểm tra tương tự trong ví dụ dưới đây:

my_list = [1,2,2,3,1,4,5,1,2,6]myFinallist = []for i in my_list:if i not in myFinallist:myFinallist.append(i)print(list(myFinallist))

Đầu ra:

[1, 2, 3, 4, 5, 6]

Xóa các bản sao khỏi danh sách bằng cách sử dụng tính năng hiểu danh sách

Hiểu danh sách là các hàm Python được sử dụng để tạo chuỗi mới (chẳng hạn như danh sách, từ điển, v.v.) bằng cách sử dụng các chuỗi đã được tạo. Điều này giúp bạn giảm các vòng lặp dài hơn và làm cho mã của bạn dễ đọc và dễ bảo trì hơn.

Hãy để chúng tôi sử dụng khả năng hiểu danh sách để loại bỏ các bản sao khỏi danh sách đã cho.

my_list = [1,2,2,3,1,4,5,1,2,6]my_finallist = [][my_finallist.append(n) for n in my_list if n not in my_finallist]print(my_finallist)

Đầu ra:

[1, 2, 3, 4, 5, 6]

Loại bỏ các bản sao khỏi danh sách bằng phương thức Numpy unique ().

Phương thức unique () từ mô-đun Numpy có thể giúp chúng tôi loại bỏ trùng lặp khỏi danh sách đã cho.

Để làm việc với Numpy nhập mô-đun numpy đầu tiên, bạn cần làm theo các bước sau:

Bước 1 ) Nhập mô-đun Numpy

import numpy as np

Bước 2) Sử dụng danh sách của bạn với các bản sao bên trong phương pháp duy nhất như được hiển thị bên dưới. Đầu ra được chuyển đổi trở lại định dạng danh sách bằng cách sử dụng phương thức tolist ().

myFinalList = np.unique(my_list).tolist()

Bước 3) Cuối cùng in danh sách như hình dưới đây:

print(myFinalList)

Mã cuối cùng với đầu ra như sau:

import numpy as npmy_list = [1,2,2,3,1,4,5,1,2,6]myFinalList = np.unique(my_list).tolist()print(myFinalList)

Đầu ra:

[1, 2, 3, 4, 5, 6]

Xóa các bản sao khỏi danh sách bằng phương pháp Pandas

Mô-đun Pandas có một phương thức unique () sẽ cung cấp cho chúng ta các phần tử duy nhất từ ​​danh sách đã cho.

Để làm việc với mô-đun Pandas, bạn cần làm theo các bước sau:

Bước 1) Nhập mô-đun Pandas

import pandas as pd

Bước 2) Sử dụng danh sách của bạn với các bản sao bên trong phương thức unique () như được hiển thị bên dưới:

myFinalList = pd.unique(my_list).tolist()

Bước 3) In danh sách như hình dưới đây:

print(myFinalList)

Mã cuối cùng với đầu ra như sau:

import pandas as pdmy_list = [1,2,2,3,1,4,5,1,2,6]myFinalList = pd.unique(my_list).tolist()print(myFinalList)

Đầu ra:

[1, 2, 3, 4, 5, 6]

Loại bỏ các bản sao bằng cách sử dụng enumerate () và khả năng hiểu danh sách

Đây là sự kết hợp của việc hiểu danh sách và liệt kê để loại bỏ các phần tử trùng lặp. Enumerate trả về một đối tượng có bộ đếm cho từng phần tử trong danh sách. Ví dụ (0,1), (1,2), v.v ... Ở đây giá trị đầu tiên là chỉ mục và giá trị thứ hai là mục danh sách. W

Mỗi phần tử được kiểm tra nếu nó tồn tại trong danh sách và nếu có, nó sẽ bị xóa khỏi danh sách.

my_list = [1,2,2,3,1,4,5,1,2,6]my_finallist = [i for j, i in enumerate(my_list) if i not in my_list[:j]]print(list(my_finallist))

Đầu ra:

[1, 2, 3, 4, 5, 6]

Tóm lược

  • Để xóa các bản sao khỏi danh sách, bạn có thể sử dụng hàm tích hợp set (). Đặc biệt của phương thức set () là nó trả về các phần tử riêng biệt.
  • Bạn có thể xóa các bản sao khỏi danh sách đã cho bằng cách nhập các bộ sưu tập OrderedDictfrom. Nó có sẵn từ python2.7 trở đi. OrderedDictdict sẽ trả lại cho bạn các phần tử riêng biệt theo thứ tự mà khóa hiện diện.
  • Bạn có thể sử dụng vòng lặp for mà chúng tôi sẽ duyệt qua danh sách các mục để loại bỏ các bản sao.
  • Phương thức unique () từ mô-đun Numpy có thể giúp chúng tôi loại bỏ trùng lặp khỏi danh sách đã cho.
  • Mô-đun Pandas có một phương thức unique () sẽ cung cấp cho chúng ta các phần tử duy nhất từ ​​danh sách đã cho.
  • Sự kết hợp giữa hiểu danh sách và liệt kê được sử dụng để loại bỏ các phần tử trùng lặp khỏi danh sách. Enumerate trả về một đối tượng có bộ đếm cho từng phần tử trong danh sách.