Làm cách nào để loại bỏ các bản sao trong chuỗi python mà không thay đổi thứ tự?

Trong hướng dẫn này, bạn sẽ học cách xóa tất cả các chuỗi trùng lặp khỏi một chuỗi đã cho trong Python. Chuỗi trong Python là một chuỗi các ký tự được bao bọc bên trong dấu nháy đơn, kép hoặc ba. Đối với một chuỗi đã cho, chúng ta phải xóa tất cả các ký tự xuất hiện nhiều lần trong chuỗi. Chúng tôi sẽ theo thứ tự xuất hiện của các nhân vật. Ví dụ,

Đầu vào. "chuỗi"

đầu ra. "chuỗi"

Để giải quyết vấn đề này, có nhiều cách tiếp cận khác nhau,

  1. sử dụng hàm OrderedDict[] và fromkeys[]
  2. sử dụng hàm OrderedDict[] và thiết lập phương pháp tiếp cận

Chúng ta sẽ xem xét các cách tiếp cận này một cách riêng biệt

Cách tiếp cận 1. sử dụng hàm OrderedDict[]

Theo cách tiếp cận này, chúng tôi sẽ sử dụng phương thức OrderedDict[] từ lớp bộ sưu tập và fromkeys[] trong chương trình của chúng tôi

OrderedDict là một lớp con từ điển ghi nhớ thứ tự của các phím được chèn trước. Vì không thể có các khóa trùng lặp nên phương thức này sẽ trả về chuỗi sau khi xóa các ký tự trùng lặp

thuật toán

Thực hiện theo thuật toán để hiểu cách tiếp cận tốt hơn

Bước 1- Nhập OrderedDict từ lớp bộ sưu tập

Bước 2- Xác định một chức năng sẽ loại bỏ các bản sao

Bước 3- Khai báo một chuỗi ký tự

Bước 4- Gọi hàm xóa ký tự trong chuỗi đó

Bước 5- In giá trị trả về của hàm

Chương trình Python 1

Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên

from collections import OrderedDict

def remove_duplicate[s]: 
    return "".join[OrderedDict.fromkeys[s]]

# test
s="abcfgbsca"
print[s]
print["After removing duplicates: ",remove_duplicate[s]]


abcfgbsca
Sau khi xóa trùng lặp. abcfgs

Cách tiếp cận 2. Ra lệnhDict

Trong cách tiếp cận này, chúng tôi sẽ chuyển đổi chuỗi thành một tập hợp bằng cách sử dụng phương thức set[]. Khi đó chúng ta sẽ khai báo một chuỗi khác và lưu trữ các ký tự chưa có trong chuỗi. Chuỗi mới này sẽ chứa chuỗi kết quả

thuật toán

Thực hiện theo thuật toán để hiểu cách tiếp cận tốt hơn

Bước 1- Nhập OrderedDict từ lớp bộ sưu tập

Bước 2- Xác định một chức năng sẽ loại bỏ các bản sao

Bước 3- Tạo một bộ chuỗi và lưu trữ

Bước 4- Khai báo một chuỗi rỗng mới

Bước 5- Chạy một vòng lặp và thêm từng ký tự vào chuỗi trống nếu nó chưa có trong chuỗi

Bước 6- In chuỗi

Chương trình Python 2

Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên

# remove duplicates in string

from collections import OrderedDict

def remove_duplicate[s]:
    string=set[s]
    string="".join[string]
    dup=""
    for i in s:
        if[i in dup]:
            pass
        else:
            dup=dup+i
    print["After removing: ",dup]
    
s="stdsrdthw"
print[s]
print[remove_duplicate[s]]


stdsrdthw
Sau khi xóa. stdrhw

Phần kết luận

Trong hướng dẫn này, chúng tôi đã thảo luận về hai cách tiếp cận để loại bỏ các bản sao khỏi chuỗi. Chúng ta cũng đã thảo luận về cách sử dụng các phương thức của lớp tập hợp và sử dụng chúng để loại bỏ các bản sao

Trong bài này chúng ta sẽ tìm hiểu list trong python là gì. Vì danh sách python là một tập hợp nhiều phần tử thậm chí chứa các phần tử trùng lặp, đôi khi cần phải làm cho danh sách trở nên độc nhất. Ở đây, chúng ta sẽ nghiên cứu nhiều cách để loại bỏ các bản sao khỏi danh sách trong python. Vậy hãy bắt đầu

Danh sách là gì?

Danh sách là kiểu dữ liệu quan trọng nhất trong ngôn ngữ python. Trong ngôn ngữ Python, danh sách được viết dưới dạng danh sách các giá trị được phân tách bằng dấu phẩy bên trong dấu ngoặc vuông. Ưu điểm quan trọng nhất của danh sách là các phần tử bên trong danh sách không bắt buộc phải có cùng kiểu dữ liệu và lập chỉ mục phủ định. Ngoài ra, mọi thao tác của chuỗi cũng được áp dụng tương tự trên kiểu dữ liệu danh sách như cắt, nối, v.v. Ngoài ra, chúng ta có thể tạo danh sách lồng nhau i. danh sách e chứa danh sách khác

Ví dụ

# creating a list of items with different data types 
sample_list = [6,"mark",[A,I]] 
print[sample_list]

 

đầu ra

[6, đánh dấu, ['A', 'Tôi']]

5 cách để loại bỏ các bản sao khỏi danh sách trong Python

Có nhiều cách để loại bỏ các bản sao khỏi danh sách trong python. Hãy cùng nghiên cứu chúng dưới đây

Phương pháp 1. Phương pháp ngây thơ

Trong phương pháp này, chúng tôi duyệt qua danh sách rồi nối thêm lần xuất hiện đầu tiên của phần tử trong danh sách mới, sau đó tất cả các phần tử khác sẽ bị bỏ qua

Ví dụ

# removing duplicated from the list using naive methods 

# initializing list 
sam_list = [11, 13, 15, 16, 13, 15, 16, 11] 
print ["The list is: " + str[sam_list]] 

# remove duplicated from list 
result = [] 
for i in sam_list: 
    if i not in result: 
        result.append[i] 

# printing list after removal 
print ["The list after removing duplicates : " + str[result]] 

 

đầu ra

danh sách là. [11, 13, 15, 16, 13, 15, 16, 11]

Danh sách sau khi loại bỏ trùng lặp. [11, 13, 15, 16]

Phương pháp 2. Sử dụng một danh sách toàn diện

Phương pháp này tương tự như phương pháp trên, nhưng phương pháp này ngắn hơn phương pháp trên

Ví dụ

# removing duplicated from the list using list comprehension 

# initializing list 
sam_list = [11, 13, 15, 16, 13, 15, 16, 11] 
print ["The list is: " + str[sam_list]] 

 
# to remove duplicated from list 
result = [] 
[result.append[x] for x in sam_list if x not in result] 

# printing list after removal 
print ["The list after removing duplicates: " + str[result]] 

 

đầu ra

danh sách là. [11, 13, 15, 16, 13, 15, 16, 11]

Danh sách sau khi loại bỏ trùng lặp. [11, 13, 15, 16]

Phương pháp 3. Sử dụng bộ[]

Phương pháp này là phương pháp phổ biến nhất để xóa bản sao khỏi danh sách python. Điều này là do cấu trúc dữ liệu đã đặt không cho phép trùng lặp. Nhưng hạn chế của phương pháp này là mất thứ tự của các phần tử

Ví dụ

# removing duplicated from the list using set[] 

# initializing list 
sam_list = [11, 15, 13, 16, 13, 15, 16, 11] 
print ["The list is: " + str[sam_list]] 

# to remove duplicated from list 
sam_list = list[set[sam_list]] 

# printing list after removal 
# ordering distorted
print ["The list after removing duplicates: " + str[sam_list]] 

 

đầu ra

danh sách là. [11, 15, 13, 16, 13, 15, 16, 11]

Danh sách sau khi loại bỏ trùng lặp. [16, 11, 13, 15]

Phương pháp 4. Sử dụng hiểu danh sách + liệt kê[]

Danh sách toàn diện khi được hợp nhất với chức năng liệt kê, chúng tôi có thể xóa bản sao khỏi danh sách python. Về cơ bản trong phương pháp này, các phần tử đã xảy ra sẽ bị bỏ qua và thứ tự cũng được duy trì

Ví dụ

# removing duplicated from the list using list comprehension + enumerate[] 

# initializing list 
sam_list = [11, 15, 13, 16, 13, 15, 16, 11] 
print ["The list is: " + str[sam_list]] 

# to remove duplicated from list 
result = [i for n, i in enumerate[sam_list] if i not in sam_list[:n]] 

# printing list after removal 
print ["The list after removing duplicates: " + str[result]] 

 

đầu ra

danh sách là. [11, 13, 15, 16, 13, 15, 16, 11]

Danh sách sau khi loại bỏ trùng lặp. [11, 13, 15, 16]

Phương pháp 5. Sử dụng bộ sưu tập. Ra lệnhDict. fromkeys[]

Đây là phương pháp nhanh nhất để đạt được mục tiêu loại bỏ các bản sao khỏi danh sách python. Phương pháp này trước tiên sẽ loại bỏ các bản sao và trả về một từ điển đã được chuyển đổi thành một danh sách. Ngoài ra, phương pháp này hoạt động tốt trong trường hợp chuỗi

Ví dụ

# removing duplicated from list using collections.OrderedDict.fromkeys[] 
from collections import OrderedDict 

# initializing list 
sam_list = [11, 15, 13, 16, 13, 15, 16, 11] 
print ["The list is: " + str[sam_list]] 

# to remove duplicated from list 
result = list[OrderedDict.fromkeys[sam_list]] 

# printing list after removal 
print ["The list after removing duplicates: " + str[result]] 

 

đầu ra

danh sách là. [11, 15, 13, 16, 13, 15, 16, 11]

Danh sách sau khi loại bỏ trùng lặp. [11, 15, 13, 16]

Đây là một số phương pháp mà chúng ta có thể xóa bản sao khỏi danh sách python

Phần kết luận

Do đó, trong bài viết này, chúng ta đã tìm hiểu về danh sách python và các phương pháp khác nhau để loại bỏ các phần tử trùng lặp khỏi danh sách trong python. Ngoài ra, chúng tôi đã nghiên cứu ví dụ cùng với đầu ra cho các phương thức khác nhau

Làm cách nào để xóa các bản sao khỏi chuỗi mà không thay đổi thứ tự?

Chúng ta có thể xóa các ký tự trùng lặp khỏi một chuỗi bằng cách sử dụng vòng lặp for đơn giản, sắp xếp, băm và phương thức IndexOf[] . Vì vậy, có thể có nhiều cách để loại bỏ trùng lặp. Bằng cách sử dụng vòng lặp for đơn giản.

Làm cách nào để xóa tất cả các phần tử trùng lặp trong danh sách và giữ nguyên thứ tự danh sách?

Lặp qua mảng [thông qua iterator, không phải foreach] và xóa trùng lặp . Sử dụng bộ để tìm trùng lặp. Lặp lại qua mảng và thêm tất cả các phần tử vào LinkedHashSet, nó không cho phép trùng lặp và giữ thứ tự các phần tử. Sau đó xóa mảng, lặp qua tập hợp và thêm từng phần tử vào mảng.

Chủ Đề