Python嵌套列表操作:如何实现每个子列表重复3次生成新列表
错误原因
你写的new_list = [i*3 for i in original]之所以输出不符合预期,核心是逻辑错位:推导式里的i是原列表的每个子列表,而Python中列表乘整数的运算规则,是把列表内部的元素重复N次拼接成一个更长的单列表,并不是把当前子列表作为独立整体重复插入外层列表,所以最终得到的是三个被拉长的单列表,而不是每个子列表重复三次的嵌套结构。
修正方案
要实现「每个子列表作为独立元素,连续重复3次排列在新列表中」的效果,只需要调整推导式的循环逻辑,对遍历到的每个子列表,连续生成3次独立的外层列表元素即可:
new_list = [sub_item for sub_item in original for _ in range(3)]
运行上述代码得到的结构,和你预期的输出完全一致。
额外提示
如果后续需要修改生成的重复子列表,不希望改动某一个重复项时联动影响其他同内容的重复项,可以在重复时为每个子列表生成独立的浅拷贝,避免所有重复项指向同一个内存对象:
# 生成独立拷贝,消除重复子列表的引用联动 new_list = [sub_item.copy() for sub_item in original for _ in range(3)]
内容的提问来源于stack exchange,提问作者Ahmad
相关产品推荐
相关产品推荐

