Python新手求助:如何用列表推导式展平嵌套列表并实现条件逻辑
展平嵌套列表并应用条件逻辑的正确做法
嘿,作为Python新手遇到这个问题很正常,我来帮你理清楚!
你原来的代码:
nested_list = [[1,2,3], [4,5,6], [7,8,9]] odds_evens = [['odd' if n % 2 != 0 else 'even' for n in l] for l in nested_list]
之所以返回嵌套列表,是因为你用了两层嵌套的列表推导式——外层遍历每个子列表l,然后内层为每个l生成一个新的子列表,最终结果自然还是嵌套结构。
要实现展平成一维列表的需求,只需要把两层循环合并到同一个列表推导式里,调整遍历顺序即可:
nested_list = [[1,2,3], [4,5,6], [7,8,9]] odds_evens = ['odd' if n % 2 != 0 else 'even' for l in nested_list for n in l]
这个推导式的执行逻辑是:
- 先遍历外层的每个子列表
l(比如第一个[1,2,3]) - 接着遍历当前子列表里的每个元素
n(比如1、2、3) - 对每个
n应用条件判断,直接将结果加入最终的一维列表
运行这段代码后,你会得到预期的展平结果:
['odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd']
如果之后遇到更深层的嵌套列表(比如三层及以上),可以考虑结合递归或者itertools.chain工具,但针对你现在的两层嵌套场景,上面的列表推导式就足够简洁高效啦。
内容的提问来源于stack exchange,提问作者HPJM
相关产品推荐
相关产品推荐

