Có những trường hợp khi chúng ta cần lặp lại các giá trị trong danh sách. Sự trùng lặp giá trị này có thể được khắc phục trong python theo những cách sau.
Sử dụng vòng lặp for lồng nhau
Đây là một phương pháp tiếp cận thẳng trong đó chọn từng phần tử, đi qua một vòng lặp for bên trong để tạo bản sao của nó và sau đó chuyển cả hai phần tử vào vòng lặp for bên ngoài.
Ví dụ
# Given list listA = ['Mon', 'Tue', 9, 3, 3] print("Given list : ",listA) # Adding another element for each element Newlist = [i for i in listA for n in (0, 1)] # Result print("New list after duplication: ",Newlist)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
Given list : ['Mon', 'Tue', 9, 3, 3] New list after duplication: ['Mon', 'Mon', 'Tue', 'Tue', 9, 9, 3, 3, 3, 3]
Sử dụng itertools
Mô-đun itertools xử lý thao tác dữ liệu trong các tệp lặp. Ở đây chúng tôi áp dụng chain.from_iterables
Ví dụ
import itertools # Given list listA = ['Mon', 'Tue', 9, 3, 3] print("Given list : ",listA) # Adding another element for each element Newlist = list(itertools.chain.from_iterable([n, n] for n in listA)) # Result print("New list after duplication: ",Newlist)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
Given list : ['Mon', 'Tue', 9, 3, 3] New list after duplication: ['Mon', 'Mon', 'Tue', 'Tue', 9, 9, 3, 3, 3, 3]
Với giảm
Hàm giảm áp dụng một hàm cụ thể được truyền cho nó làm đối số cho tất cả các phần tử danh sách được truyền vào nó dưới dạng đối số thứ hai. Chúng tôi sử dụng điều này với chức năng thêm để thêm phần tử trùng lặp của mỗi phần tử có trong danh sách.
Ví dụ
from functools import reduce from operator import add # Given list listA = ['Mon', 'Tue', 9, 3, 3] print("Given list : ",listA) # Adding another element for each element Newlist = list(reduce(add, [(i, i) for i in listA])) # Result print("New list after duplication: ",Newlist)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
Given list : ['Mon', 'Tue', 9, 3, 3] New list after duplication: ['Mon', 'Mon', 'Tue', 'Tue', 9, 9, 3, 3, 3, 3]