交换3个列表的元素并生成4个列表

2024-06-28 18:55:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过交换最后三个元素从3个给定列表中生成4个列表

enter image description hereenter image description here

我的名单是

a=[[1,0,0,1,1,0],[0,1,1,1,0,1],[1,1,1,1,0,0]]

我想要

b=[[1,0,0,1,0,1],[0,1,1,1,1,0],[0,1,1,1,0,0],[1,1,1,1,0,1]]

我还想在任何偶数列表上这样做,例如8个元素的列表,最后4个元素将交换。你知道吗

我的代码好像是这样的

n=8
chromosome=[[6, 4, 3, 5, 0, 3, 1, 0], [6, 2, 7, 6, 0, 4, 7, 5], [0, 3, 4, 3, 2, 1, 7, 6]]
        for i in range(0,int(n/2)):
            flag1 = False
            flag = False
            for j in range(0,n):
                if (i)!=n/(n/2):
                    if flag1==False:
                        chromosome2[i].append(chromosome[i][j])
                        if int((n-1)/2)==j:
                            flag1 = True
                    else:
                        chromosome2[i].append(chromosome[i+1][j])
                else:
                    if flag==False:
                        chromosome2[i].append(chromosome[i+1][j])
                        if int((n - 1) / 2) == j:
                            flag = True
                    else:
                        chromosome2[i].append(chromosome[i - 1][j])


Tags: infalsetrue元素列表forifrange
1条回答
网友
1楼 · 发布于 2024-06-28 18:55:15

您希望将一个列表的前半部分与另一个列表的后半部分连接起来,而不是最后三个元素

first, middle, last = [[1, 0, 0, 1, 1, 0], [0, 1, 1, 1, 0, 1], [1, 1, 1, 1, 0, 0]]

split_point = len(first) // 2

b = [
    first[:split_point] + middle[split_point:],
    middle[:split_point] + first[split_point:],

    middle[:split_point] + last[split_point:],
    last[:split_point] + middle[split_point:],
]

相关问题 更多 >