创建一个函数来交换嵌套列表中的元素并沿途更新列表
Creating a function that swaps elements in a nested list and updating the list along the way
我需要创建一个函数来交换嵌套列表中的特定元素。
这是我正在使用的代码,列表是 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 dg swap_r()
dg.append()
for recomb_r2 in [0,1]:
if (recomb_r2 == 0):
p_2 = (1-r)
dg_0 = dg
else:
p_2 = r
for i in dg swap_r()
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]]]
类似地,下一步是另一个交换,但在第二个 b1 和第二个 b4 之间。如果交换没有发生,最新列表保持不变,如果发生交换,列表应该交换列表中的元素并在 dg 中形成一个新列表(由更改组成)。我想知道是否有一个函数可以进行切换并通过 dg 进行迭代以创建新的更改列表?
您可以通过复制原始元素来交换元素,然后简单地连接它们。
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
我需要创建一个函数来交换嵌套列表中的特定元素。 这是我正在使用的代码,列表是 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 dg swap_r()
dg.append()
for recomb_r2 in [0,1]:
if (recomb_r2 == 0):
p_2 = (1-r)
dg_0 = dg
else:
p_2 = r
for i in dg swap_r()
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]]]
类似地,下一步是另一个交换,但在第二个 b1 和第二个 b4 之间。如果交换没有发生,最新列表保持不变,如果发生交换,列表应该交换列表中的元素并在 dg 中形成一个新列表(由更改组成)。我想知道是否有一个函数可以进行切换并通过 dg 进行迭代以创建新的更改列表?
您可以通过复制原始元素来交换元素,然后简单地连接它们。
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