Skip to main content
 首页 » 编程设计

python之对多级列表中的每一项执行操作

2025年05月04日17zhujiabin

假设我有一个这样的列表:

li = ['0', ['1', '2'], ['3', ['4', '5'], '6', ['7'], '8'], '9'] 

如何以 Pythonic 方式对列表中的所有元素应用一个函数(例如 int)?
示例:

>>> func_on_all(li, int) 
[0, [1, 2], [3, [4, 5], 6, [7], 8], 9] 

请您参考如下方法:

你可以使用这个函数:

def to_int(lst): 
    for i in lst: 
        if isinstance(i, list): 
            yield list(to_int(i)) 
        else: 
            yield int(i) 

这是一个测试运行:

>>> li = ['0', ['1', '2'], ['3', ['4', '5'], '6', ['7'], '8'], '9'] 
>>> list(to_int(li)) 
[0, [1, 2], [3, [4, 5], 6, [7], 8], 9] 

请注意,这仅适用于嵌套列表,并且只能执行 int 功能。我们可以像这样使函数更通用:

def deep_map(lst, f=int):  # the parameter `f` is the function 
    for i in lst: 
        if isinstance(i, collections.Iterable) and not isinstance(i, str): 
            yield list(deep_map(i, f)) 
        else: 
            yield f(i) 

这将允许我们使用列表以外的嵌套集合(例如元组),并且我们可以指定我们自己的函数来调用列表。