You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中遍历包含二维列表的列表?

如何在Python中遍历包含嵌套列表的列表?

要遍历这种存在嵌套列表的结构,有几种实用方法,根据你的需求选择:

1. 递归遍历(支持任意深度嵌套)

递归是最直观的方式,逐个检查元素:如果是列表就递归处理,否则直接操作元素。适合不确定嵌套深度的场景:

my_skills = ["HTML",  "CSS", "JS", "Python", ["Flask", "Django"], "MySQL"]

def traverse_nested_list(lst):
    for item in lst:
        if isinstance(item, list):
            traverse_nested_list(item)
        else:
            print(item)  # 替换成你需要的业务操作

traverse_nested_list(my_skills)

运行后会依次输出:HTML、CSS、JS、Python、Flask、Django、MySQL。

2. 迭代式遍历(避免递归深度限制)

如果嵌套层级极深,递归可能触发栈溢出,这时可以用栈(深度优先)或队列(广度优先)迭代处理:

深度优先遍历(和递归顺序一致)

my_skills = ["HTML",  "CSS", "JS", "Python", ["Flask", "Django"], "MySQL"]

stack = my_skills.copy()
while stack:
    item = stack.pop()
    if isinstance(item, list):
        stack.extend(reversed(item))  # 反转保证元素顺序和递归一致
    else:
        print(item)

广度优先遍历(先处理外层,再处理内层)

from collections import deque

my_skills = ["HTML",  "CSS", "JS", "Python", ["Flask", "Django"], "MySQL"]

queue = deque(my_skills)
while queue:
    item = queue.popleft()
    if isinstance(item, list):
        queue.extend(item)
    else:
        print(item)

广度优先的输出顺序是:HTML、CSS、JS、Python、MySQL、Flask、Django。

3. 针对两层嵌套的简化遍历

如果确定只有两层嵌套结构,直接用两层循环即可,代码更简洁:

my_skills = ["HTML",  "CSS", "JS", "Python", ["Flask", "Django"], "MySQL"]

for item in my_skills:
    if isinstance(item, list):
        for sub_item in item:
            print(sub_item)
    else:
        print(item)

内容的提问来源于stack exchange,提问作者Ahmed Amin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:45:38