我需要创建一个函数来交换嵌套列表中的特定元素。这是我正在使用的代码,列表为dg。
events_b_list = []
dg = [[[a1,b1], [a1,b1]],[[a2,b2], [a2,b2]], [[a3,b3], [a3,b3]],[[a4,b4], [a4,b4]]]
for recomb_r1 in [0,1]:
if (recomb_r1 == 0):
p_1 = (1-r)
dg_0 = dg
else:
p_1 = r
for i in swap_r1()
dg.append()
recomb_r1指的是第一个b1和第一个b3之间的交换。 [[[a1,b1],[a1,b1]],[[a2,b2],[a2,b2]],[[a3,b3],[a3,b3]] ,[[a4,b4],[a4,b4]]]。基本上,如果recomb_r1 == 0,则dg中的当前列表不变,但是如果recomb_r1确实发生了,则将一个新的,已更改的列表与已更改的元素一起添加到dg中。因此,新的dg将如下所示,
dg= [[[a1,b1], [a1,b1]],[[a2,b2], [a2,b2]], [[a3,b3], [a3,b3]],[[a4,b4], [a4,b4]], [[a1,b3], [a1,b1]],[[a2,b2], [a2,b2]], [[a3,b1], [a3,b3]],[[a4,b4], [a4,b4]]]
该函数(称为swap_r1)需要在循环内部调用,但是如果有更容易管理的方法,请告诉我!
您可以通过复制原始元素来交换元素,然后只需将它们连接起来。
import copy
events_b_list = []
dg = [[[a1,b1], [a1,b1]],[[a2,b2], [a2,b2]], [[a3,b3], [a3,b3]],[[a4,b4], [a4,b4]]]
for recomb_r1 in [0,1]:
if (recomb_r1 == 0):
p_1 = (1-r)
dg_0 = dg
else:
p_1 = r
fg = copy.deepcopy(dg)
fg[0][0][1], fg[2][0][1] = fg[2][0][1], fg[0][0][1]
dg = dg + fg