创建一个交换嵌套列表中元素的函数

问题描述 投票:0回答:1

我需要创建一个函数来交换嵌套列表中的特定元素。这是我正在使用的代码,列表为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)需要在循环内部调用,但是如果有更容易管理的方法,请告诉我!

python list nested-loops
1个回答
0
投票

您可以通过复制原始元素来交换元素,然后只需将它们连接起来。

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
© www.soinside.com 2019 - 2024. All rights reserved.