เมื่อต้องการทำ cross join (สลับกัน) ทุก K ส่วนของสองลิสต์ สามารถใช้ generator function ที่มีลูป iteration และ yield ได้
ตัวอย่าง
def merge_pair_elem(my_list_1, my_list_2, K):
index_1 = 0
index_2 = 0
while index_1 < len(my_list_1):
for i in range(K):
yield my_list_1[index_1]
index_1 += 1
for i in range(K):
yield my_list_2[index_2]
index_2 += 1
my_list_1 = [24, 13, 82, 22, 65, 74]
my_list_2 = [55, 63, 17, 44, 33, 15]
print("The first list is :")
print(my_list_1)
print("The second list is :")
print(my_list_2)
K = 1
print("The value of K is :")
print(K)
my_result = [element for element in merge_pair_elem(my_list_1, my_list_2, K)]
print("The result is :")
print(my_result)
ผลลัพธ์
The first list is : [24, 13, 82, 22, 65, 74] The second list is : [55, 63, 17, 44, 33, 15] The value of K is : 1 The result is : [24, 55, 13, 63, 82, 17, 22, 44, 65, 33, 74, 15]
คำอธิบาย
กำหนด generator function
merge_pair_elemรับสองลิสต์และ K ใช้yieldสลับส่งค่า K ตัวจากลิสต์แรก แล้ว K ตัวจากลิสต์ที่สองกำหนดสองลิสต์ข้อมูลและค่า K
ใช้ list comprehension รับค่าจาก generator แปลงเป็นลิสต์
แสดงผลลัพธ์ที่สลับกันไปมาระหว่างสองลิสต์