Python中向嵌套列表单个子列表追加元素却全部变更的解决方法
如何正确创建独立子列表的嵌套列表并单独修改某一子列表
你遇到的问题本质是 [[]] * 5 并没有生成5个独立的空列表,而是把同一个空列表的引用重复了5次——这就导致修改任意一个子列表,所有位置的引用都会指向被修改后的列表。
下面是几种解决办法:
用列表推导式创建独立嵌套列表
这是最常用也最简洁的方式,每次循环都会生成一个全新的空列表,确保每个子列表都是独立对象:list_of_lists = [[] for _ in range(5)] list_of_lists[2].append(123) print(list_of_lists) # 输出: [[], [], [123], [], []]手动循环添加空列表
如果你不习惯列表推导式,也可以通过循环逐个添加新的空列表:list_of_lists = [] for _ in range(5): list_of_lists.append([]) list_of_lists[2].append(123) print(list_of_lists) # 输出: [[], [], [123], [], []]如果已经用
[[]]*5创建了列表,补救方法
先把目标位置的子列表替换成全新的空列表,再进行追加操作:list_of_lists = [[]] * 5 list_of_lists[2] = [] # 替换为新的空列表,断开和原列表的引用 list_of_lists[2].append(123) print(list_of_lists) # 输出: [[], [], [123], [], []]
内容的提问来源于stack exchange,提问作者Alec
相关产品推荐
相关产品推荐

