为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Python 的嵌套列表中替换所有值(通过函数)?

如何在 Python 的嵌套列表中替换所有值(通过函数)?

湖上湖 2021-11-02 19:03:36
有很多建议,但我无法坚持下去。我在下面最接近的解决方案。数据是这样的:my_list = ([1, [2, 3], 4, [5, [6 , [], [8, 9]], 10]], 8)和一个函数def convert(G, l, d):    z = []    if isinstance(x, list):        print(x)        z.append(convert(G, x, d))    else:        print(x)        z.append([v[d] for n,v in G.nodes(data=True) if n == l])    return z执行:print(convert(G, my_list, "name"))它给出空数组,但 print(x) 按原样获取源。我想我很接近。问题是我不知道如何将latif n == l作为整数而不是列表传递。编辑输出: (['a', ['b', 'c'], 'd', ['e', ['f' , [], ['g', 'h']], 'j']], 'g) 以相同的格式(嵌套)。自定义函数只获取每个元素 (int) 并从 dict (letter) 返回其属性。另一个尝试:my_list = ([1, [2, 3], 4, [5, [6 , [], [8, 9]], 10]], 8)z = []def convert(G, l, d):    z.append([convert(G, x, d) if isinstance(x, list) else [v[d] for n,v in G.nodes(data=True) if n == x]])    return zz = convert(G, my_`list, "name")print(z)这部分是一个自定义函数:[v[d] for n,v in G.nodes(data=True) if n == l]所以 G 可以是任何东西。你可以把它当作[...]例如: G.nodes = {0: {'name': 'a'}, 1: {'name': 'b'}, 2: {'name': 'c'}, 3: {'name': 'd'}}
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

遵循您的结构的简化版本可能如下所示:


def v(x):

    return x + 1


def convert(l):

    z = []

    for x in l:

        if isinstance(x, list):

            z.append(convert(x))

        else:

            z.append(v(x))

    return z

这导致预期的嵌套:


>>> convert([[1, [2, 3], 4, [5, [6 , [], [8, 9]], 10]], 8])

[[2, [3, 4], 5, [6, [7, [], [9, 10]], 11]], 9]


查看完整回答
反对 回复 2021-11-02
  • 3 回答
  • 0 关注
  • 255 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信