Python处理Pandas DataFrame时嵌套列表被意外覆盖如何解决
问题根源
Python中的列表属于可变对象,当你执行list_of_lists.append(val)时,并没有将val的内容复制一份存入嵌套列表,只是存入了val的内存引用,两者指向同一块内存地址的列表。后续你修改val[loop_cont]的值时,本质是修改了同一块内存空间的内容,因此嵌套列表里对应位置的元素会同步变化。
修复方案
只需要在存入嵌套列表时,追加val的独立浅拷贝即可,无需修改其他逻辑:
将原代码中的
list_of_lists.append(val)
修改为:
list_of_lists.append(val.copy()) # 或者使用 list_of_lists.append(list(val)),效果完全一致
修改后存入嵌套列表的是和原val完全独立的新列表,后续修改原val的元素不会影响嵌套列表中已经存入的内容。
内容的提问来源于stack exchange,提问作者Felipe Vallim
相关产品推荐
相关产品推荐

