递归修改具有不规则形状的列表

Gab*_*iel 3 python list

aa名单是我的输入,以及bb列表我期望的输出.操作相当简单(将每个元素更改aa为字符串,附加一些字符,同时保持原始形状),但我这样做的方式似乎不必要地复杂化.

是否有更好的(更多Pythonic)方式来做到这一点?

aa = [0, 5, 6, [8], 3, [9, 2]]

bb = []
for e1 in aa:
    if type(e1) == list:
        bb2 = []
        for e2 in e1:
            bb2.append('sss' + str(e2))
        bb.append(bb2)
    else:
        bb.append('sss' + str(e1))

print(bb)
['sss0', 'sss5', 'sss6', ['sss8'], 'sss3', ['sss9', 'sss2']]
Run Code Online (Sandbox Code Playgroud)

Cor*_*mer 7

您可以使用递归列表推导来实现此目的

def f(data):
    return [f(i) if isinstance(i, list) else 'sss{}'.format(i) for i in data]
Run Code Online (Sandbox Code Playgroud)

例如

>>> aa = [0, 5, 6, [8], 3, [9, 2]]
>>> f(aa)
['sss0', 'sss5', 'sss6', ['sss8'], 'sss3', ['sss9', 'sss2']]
Run Code Online (Sandbox Code Playgroud)