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

时间:2019-04-08 18:06:33

标签: python

我想通过交换最后三个元素从3个给定列表中制作4个列表。例如

enter image description here enter 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个元素的列表,然后交换最后四个元素。

我的代码看起来像这样

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])

1 个答案:

答案 0 :(得分:1)

您想将一个列表的前半部分与另一个列表的后半部分(而不是后三个元素)结合起来

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:],
]