Python修改和编辑列表

我刚刚开始学习python,我正在尝试一些代码,我想问一下为什么以下两个代码的功能不同?

第一个代码示例:

def combine_lists(list1, list2):
  new_list = list2
  index = len(list2)
  for items in list1:
      new_list.insert(index, items)
  return(new_list)
    
Jamies_list = ["Alice", "Cindy", "Bobby", "Jan", "Peter"]
Drews_list = ["Mike", "Carol", "Greg", "Marcia"]

print(combine_lists(Jamies_list, Drews_list))

第一个代码的输出是正确的(我希望将列表 1 反转):

[“迈克”、“卡罗尔”、“格雷格”、“玛西亚”、“彼得”、“简”、“鲍比”、“辛迪”、“爱丽丝”]

第二个代码示例:

def combine_lists(list1, list2):
  new_list = list2
  for items in list1:
      new_list.insert(len(list2), items)
  return(new_list)
    
Jamies_list = ["Alice", "Cindy", "Bobby", "Jan", "Peter"]
Drews_list = ["Mike", "Carol", "Greg", "Marcia"]

print(combine_lists(Jamies_list, Drews_list))

但是第二个代码输出:

[“迈克”、“卡罗尔”、“格雷格”、“玛西亚”、“爱丽丝”、“辛迪”、“鲍比”、“简”、“彼得”]

为什么仅通过将 len(list2) 分配给变量并将其用于索引插入而在这两个输出中存在差异?

谢谢!

回答

这一行:

    new_list = list2

只需为list2列表创建一个新名称,但两个变量都引用同一个列表。

因此,在第一个示例中,您获得该列表的长度,index = len(list2)然后index通过 for 循环在每次迭代中使用相同的值。

在第二个示例中,len(list2)每次迭代都会得到,但是由于您正在修改new_list,因此您也在修改list2并且它的长度会随着您的进行而增加。

如果您需要该列表的副本,请使用list(new_list) = list2或创建一个副本new_list = list2.copy()


以上是Python修改和编辑列表的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>