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

Python – Cross Join ทุก K ส่วนของลิสต์

เมื่อต้องการทำ 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 แปลงเป็นลิสต์

  • แสดงผลลัพธ์ที่สลับกันไปมาระหว่างสองลิสต์