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