该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)
您可以使用递归列表推导来实现此目的
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)
| 归档时间: |
|
| 查看次数: |
33 次 |
| 最近记录: |