python 列表 : double each element in a list while maintaining the structure

标签 python list

如何编写一个函数来将列表中的每个元素加倍,同时保持列表的结构?

例如:

f([1, [2, [3]]]) => [2, [4, [6]]]

最佳答案

一个简单的方法可能是:

def double(li):
    try:
        return [double(x) for x in li]
    except:  # li is not iterable, recursion base case
        return 2*li  # or sth. else for non-numerical, non-iterable types

但是请注意,此解决方案“列出”了所有类型的可迭代对象。维护可迭代对象类型的更复杂版本,因此可以处理列表、元组、集合等的任何嵌套结构,将在 try block 中包含以下行:

 return type(li)(map(double, li))  # should work in Python 2 and 3

这会实例化并返回 li 的原始类型(列表、元组等)的对象,其中包含 中所有双重元素的列表 (Py2) 或映射对象 (Py3) >li.

关于 python 列表 : double each element in a list while maintaining the structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36242316/

相关文章:

python - 对列表列表进行排序以查找共享变体

python - 将 selenium chrome 与非本地代理一起使用

python - 加速将函数作为 numba 参数的函数

r - "undefined columns selected"- 当尝试删除列表中的 na 's from df' 时

python - 如何从Python子列表中提取值

c# - 如何将列表转换为字符串并返回

python - 从 Django 中的 API 填充数据库

python - 在 python 中执行列表扩充赋值 (+=) 的动机是什么?

python - 当 x 轴和 y 轴为文本时注释数据点 matplotlib

r - 从 map 中的列表中获取对象的名称