Computer >> Máy Tính >  >> Lập trình >> Python

Lặp lại phần tử trong danh sách bằng Python

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]