如何在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
相关产品推荐
相关产品推荐

