如何将带赋值的for循环转换为Python列表推导式?
列表推导式转换方案
完全可以实现,不过要先明确:列表推导式的本质是生成全新列表,而非对原列表做原地修改,只要你可以接受用新生成的列表替换原有变量,就能达到和你给出的for循环完全一致的效果。
转换后代码
data = [[item[0].replace('+00:00','Z').replace(' ','T'), *item[1:]] for item in data]
逻辑说明
- 遍历原
data中的每一个子列表item - 对每个子列表的第0位元素执行你需要的两次字符串替换操作
- 子列表中索引1及之后的所有元素原样保留,用
*item[1:]解包拼接 - 最终生成的新列表直接覆盖原
data变量,运行结果和你的原生for循环没有差异
适用场景说明
- 如果你没有强制要求原地修改原列表对象的需求,优先用上述推导式写法,代码更简洁
- 如果你必须保留原列表的内存引用(比如有其他变量同时引用了原
data对象),则更建议保留原有的for循环写法,强制用列表推导式反而会额外占用内存,没有必要
内容的提问来源于stack exchange,提问作者balistolux
相关产品推荐
相关产品推荐

