มีสถานการณ์ที่เราต้องซ้ำค่าในลิสต์ การทำซ้ำค่านี้สามารถทำได้ใน Python ด้วยวิธีต่อไปนี้
ใช้ลูป for ซ้อน
เป็นวิธีตรงไปตรงมาที่เราเลือกแต่ละองค์ประกอบ นำเข้าลูป for ภายในเพื่อสร้างซ้ำและส่งทั้งสองไปยังลูป for ภายนอก
ตัวอย่าง
# 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)
Output
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้ -
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_iterable ซึ่ง...
ตัวอย่าง
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)
Output
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้ -
Given list : ['Mon', 'Tue', 9, 3, 3] New list after duplication: ['Mon', 'Mon', 'Tue', 'Tue', 9, 9, 3, 3, 3, 3]
ด้วย reduce
ฟังก์ชัน reduce ใช้ฟังก์ชันเฉพาะที่ส่งให้เป็น argument ไปยังองค์ประกอบลิสต์ทั้งหมดที่ส่งเป็น argument ที่สอง เราใช้กับฟังก์ชัน add ที่เพิ่มองค์ประกอบซ้ำของแต่ละองค์ประกอบที่อยู่ในลิสต์
ตัวอย่าง
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)
Output
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้ -
Given list : ['Mon', 'Tue', 9, 3, 3] New list after duplication: ['Mon', 'Mon', 'Tue', 'Tue', 9, 9, 3, 3, 3, 3]