Đã giải quyết: đổi tên trùng lặp trong danh sách python

Đổi tên các mục trùng lặp trong danh sách có thể là một vấn đề khó giải quyết vì nó yêu cầu bạn xác định các mục trùng lặp rồi quyết định cách đổi tên chúng. Điều này có thể đặc biệt khó khăn nếu danh sách chứa nhiều phần tử hoặc nếu các phần tử là đối tượng phức tạp. Ngoài ra, việc đổi tên các bản sao có thể yêu cầu bạn sửa đổi các phần khác của mã dựa trên tên gốc của các phần tử để chúng tiếp tục hoạt động bình thường.

def rename_duplicates(lst): 
    seen = set() 
    new_lst = [] 

    for item in lst: 
        if item not in seen: 
            seen.add(item) 
            new_lst.append(item) 
        else: 
            new_item = item + '_1'   # append a suffix to make it unique  

            while new_item in seen:   # increment the suffix until it's unique  
                suffix = int(new_item.split('_')[-1]) + 1   # get the last number and add one to it  
                new_item = '{}_{}'.format('_'.join(new_item.split('_')[:-1]), suffix)

            seen.add(new_item)     # add the newly created item to the set of seen items  
            new_lst.append(new_item)     # append the newly created item to the list

    return new

_st

# Đoạn mã này định nghĩa một hàm có tên là rename_duplicates nhận một danh sách làm đối số.
def đổi tên_duplicates(lst):

# Sau đó, nó tạo một tập trống có tên là đã thấy và một danh sách trống có tên là new_lst.
đã thấy = đặt()
new_lst = []

# Sau đó, nó lặp qua các mục trong danh sách và kiểm tra xem chúng đã có trong tập hợp các mục đã xem chưa.
cho mục trong lst:
nếu mục chưa thấy: # Nếu chưa thấy, nó sẽ thêm mục đó vào tập hợp các mục đã thấy và nối nó vào danh sách mới.
đã thấy.add(item)
new_lst.append(item) # Nếu có, nó sẽ tạo một phiên bản duy nhất của mục đó bằng cách thêm hậu tố (ví dụ: '_1') vào tên của mục đó và kiểm tra xem mục mới tạo này đã có trong tập hợp các mục đã xem chưa.

khác: # Nếu vậy, nó sẽ tăng hậu tố cho đến khi tìm thấy phiên bản chưa sử dụng của tên mục đó và thêm mục mới được tạo này vào cả tập hợp các mục đã xem và vào danh sách mới trước khi trả về danh sách mới này khi kết thúc quá trình thực thi.

new_item = item + '_1'

trong khi new_item được nhìn thấy: # gia tăng hậu tố cho đến khi duy nhất

hậu tố = int(new_item.split('_')[-1]) + 1 # lấy số cuối cùng và thêm một số vào đó

new_item = '{}_{}'.format('_'.join(new_item.split('_')[:-1]), hậu tố)

đã thấy.add(mới

Danh sách trong Python

Danh sách trong Python là một trong những cấu trúc dữ liệu được sử dụng phổ biến nhất. Chúng được sử dụng để lưu trữ một bộ sưu tập các mục, có thể thuộc bất kỳ loại nào, kể cả các danh sách khác. Danh sách có thể thay đổi, nghĩa là chúng có thể được thay đổi sau khi chúng được tạo. Chúng cũng hỗ trợ các hoạt động như lập chỉ mục, cắt và nối.

Để tạo danh sách trong Python, bạn sử dụng dấu ngoặc vuông và phân tách từng mục bằng dấu phẩy:

my_list = [1, 2, 3]

Bạn có thể truy cập các phần tử riêng lẻ trong danh sách bằng cách sử dụng chỉ mục của chúng:
my_list[0] # trả về 1
my_list[1] # trả về 2
my_list[2] # trả về 3

Bạn cũng có thể sử dụng các chỉ số phủ định để truy cập các phần tử từ cuối danh sách:

my_list[-1] # trả về 3 (phần tử cuối cùng)

Bạn có thể thêm các mục vào danh sách bằng phương thức append():

my_list.append(4) # thêm 4 vào cuối danh sách

Bạn có thể xóa các mục khỏi danh sách bằng phương thức remove() hoặc pop():

my_list.remove(3) # xóa 3 khỏi danh sách

my_list.pop(2) # xóa và trả về 2 (phần tử thứ ba) khỏi danh sách

Đổi tên các bản sao trong danh sách bằng Python

Đổi tên các bản sao trong danh sách bằng Python là một tác vụ phổ biến khi xử lý danh sách. Nó liên quan đến việc thay thế các phần tử trùng lặp trong danh sách bằng các giá trị duy nhất. Điều này có thể được thực hiện bằng cách sử dụng hàm set(), hàm này sẽ loại bỏ tất cả các phần tử trùng lặp khỏi danh sách và trả về một danh sách mới chỉ có các phần tử duy nhất. Hàm set() cũng có thể được sử dụng để đổi tên các bản sao bằng cách cung cấp cho hàm ánh xạ các giá trị cũ sang giá trị mới. Ví dụ: nếu bạn có một danh sách các số và muốn thay thế tất cả các số trùng lặp bằng các ô vuông tương ứng của chúng, bạn có thể sử dụng đoạn mã sau:

# Tạo một từ điển rỗng
ánh xạ = {}

# Lặp lại danh sách ban đầu
cho mục trong my_list:
# Kiểm tra xem mục đã tồn tại trong từ điển chưa
nếu mục không có trong ánh xạ:
# Nếu không, hãy thêm nó vào từ điển và gán giá trị cho hình vuông của nó
ánh xạ [mục] = mục * mục

# Tạo danh sách kết quả trống
result_list = []

# Lặp lại danh sách ban đầu một lần nữa và thay thế từng phần tử bằng hình vuông của nó từ từ điển cho i trong my_list: result_list.append(mapping[i])

# In kết quả in(result_list)

bài viết liên quan:

Để lại một bình luận