You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免Python中list1随shuffle_cards同步更新?

问题:修改shuffle_cards时list1同步变更的解决方法

你的代码如下:

num_cards=8
list1=[1,2,3,4,5,6,7,8]
shuffle_cards=list1
for j in range(0,num_cards//2):
    shuffle_cards.insert((2*j)+1,shuffle_cards[(num_cards//2)+(2*j)])
shuffle_cards=shuffle_cards[0:num_cards]
print(shuffle_cards)
print(list1)

问题出在shuffle_cards=list1这一行:Python里列表是可变对象,直接赋值只是让两个变量指向同一个内存地址的列表对象,并非创建新的副本。所以你后续对shuffle_cards执行的插入操作,本质上是在修改那个共享的列表,list1自然也会跟着变化。

要让shuffle_cards成为独立的列表,你需要创建list1的副本,常用的三种方式:

  • 使用切片语法:shuffle_cards = list1[:]
  • 使用list构造器:shuffle_cards = list(list1)
  • 调用列表的copy方法:shuffle_cards = list1.copy()

修改后的完整代码示例:

num_cards=8
list1=[1,2,3,4,5,6,7,8]
# 创建list1的独立副本
shuffle_cards=list1.copy()
for j in range(0,num_cards//2):
    shuffle_cards.insert((2*j)+1,shuffle_cards[(num_cards//2)+(2*j)])
shuffle_cards=shuffle_cards[0:num_cards]
print(shuffle_cards)
print(list1)

这样运行后,shuffle_cards的修改就不会影响到list1了。

内容的提问来源于stack exchange,提问作者Anirudh SV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 10:03:11