我想通过交换最后三个元素从3个给定列表中制作4个列表。例如
例如,我的列表是
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])
答案 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:],
]