Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การทำซ้ำองค์ประกอบในรายการใน Python


มีบางสถานการณ์ที่เราจำเป็นต้องทำซ้ำค่าในรายการ ค่าที่ซ้ำกันนี้สามารถทำได้ใน python ด้วยวิธีต่อไปนี้

การใช้ nested for loop

เป็นแนวทางตรงไปตรงมาในการเลือกแต่ละองค์ประกอบ ผ่าน inner for loop เพื่อสร้างรายการซ้ำ จากนั้นจึงส่งผ่านทั้งคู่ไปยังด้านนอกสำหรับลูป

ตัวอย่าง

# 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)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Given list : ['Mon', 'Tue', 9, 3, 3]
New list after duplication: ['Mon', 'Mon', 'Tue', 'Tue', 9, 9, 3, 3, 3, 3]

การใช้ itertools

โมดูล itertools เกี่ยวข้องกับการจัดการข้อมูลใน iterables ที่นี่เราใช้ chain.from_iterables ซึ่ง

ตัวอย่าง

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)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Given list : ['Mon', 'Tue', 9, 3, 3]
New list after duplication: ['Mon', 'Mon', 'Tue', 'Tue', 9, 9, 3, 3, 3, 3]

พร้อมลด

ฟังก์ชัน reduce จะใช้ฟังก์ชันเฉพาะที่ส่งผ่านไปยังฟังก์ชันนี้เป็นอาร์กิวเมนต์สำหรับองค์ประกอบในรายการทั้งหมดที่ส่งผ่านไปยังฟังก์ชันดังกล่าวเป็นอาร์กิวเมนต์ที่สอง เราใช้สิ่งนี้กับฟังก์ชั่นเพิ่มซึ่งเพิ่มองค์ประกอบที่ซ้ำกันของแต่ละองค์ประกอบที่มีอยู่ในรายการ

ตัวอย่าง

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)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Given list : ['Mon', 'Tue', 9, 3, 3]
New list after duplication: ['Mon', 'Mon', 'Tue', 'Tue', 9, 9, 3, 3, 3, 3]