มีบางสถานการณ์ที่เราจำเป็นต้องทำซ้ำค่าในรายการ ค่าที่ซ้ำกันนี้สามารถทำได้ใน 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]