python高手求教,两个List怎么只改变一个List中元素的值不引起另一个List的变化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python高手求教,两个List怎么只改变一个List中元素的值不引起另一个List的变化相关的知识,希望对你有一定的参考价值。

如有List1=[[1,[2,3,4],[2,[4,5,6]]],实现功能如下,List2初始化的值为List1,但后续List1中元素的改变不能引起List2中元素的改变,有没有简单的方法

import copy
List2=copy.deepcopy(List1)

这样赋值,List2初始值和List1一样,因为是深度复制List1中的元素,所有深层元素都引用的是不同的对象,List1的任何改变不会影响List2

追问

还是这样啊,还是谢谢大侠

参考技术A 使用List方法的removeAll时,当List里面装的是对象时,这个方法会失效。因为没有重写equals方法和
hasCode()方法。因为调removeAll()方法。如果List里面存储的是对象,会调用对象的equals方法和hasCode方法
因此要重新写,没有重写的对象比较是失效的。第一次遇到要比较对象是否相等。主要是对象的属性值是否相等。
参考技术B 可以用List2=List1[:]切片不改变

开机的时候显示出一个错误对话框 然后系统中出现很多文字变成“???”的乱码 电脑高手求教

无法生成临时类(result=1)
error CS0016:Could not write to output file
'c:\Users\Leo\AppData\Local\Temp\_wljwu1c.dll' --'目录名称无效

打开详细信息就出现下面内容(其中很多文字也变成了“???”的乱码):
??????(JIT)??????????????,
??????????

************** ???? **************
System.InvalidOperationException: ???????(result=1)?
error CS0016: Could not write to output file 'c:\Users\??\AppData\Local\Temp\_wljwu1c.dll' -- '??????? '

? System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
? System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)
? System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)
? System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace)
? System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
? System.Xml.Serialization.XmlSerializer..ctor(Type type)
? MyDownloader.Core.DownloadManager.StartRecord()
? MyDownloader.Core.DownloadManager.GetInstance(String name)
? DriverMgr.mainWin.timer_Tick(Object sender, EventArgs e)
? System.Windows.Forms.Timer.OnTick(EventArgs e)
? System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
? System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** ??????? **************
mscorlib
?????: 2.0.0.0
Win32 ??: 2.0.50727.4952 (win7RTMGDR.050727-4900)
????: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
????: file:///C:/Program%20Files/Lenovo/PCCarer/Driver/CommonControls.DLL
求不用重装系统的方法 装了很多软件 重装的话注册表还原了很多软件都要重装

.
二 如果不是重装系统,而是新机子需要给硬盘分区.按如下操作
第一步:用启动软盘或光盘启动计算机
第二步:选择是否加载光驱驱动,由于分区尚未建立,选第二项不加载。然后进入下图界面
第三步:在提示符下键入分区命令fdisk后回车确认
第四步:选择文件系统格式,注意,此处选 Y 是FAT32格式,选 N 为FAT16格式。
第五步:创建DOS分区,即通常说的 C 、D 、E 盘,选择上图第一项,回车确认,进入下图
第六步:选择第一项创建主分区(即 C 盘),回车确认
第七步:系统开始检测硬盘信息。
第八步:系统询问你是否将整块硬盘划分为一个分区,当然选NO了,输入N 回车。
第九步:系统给出可供分配的磁盘空间大小。(版主硬盘才4G,可怜吧?:( )
第十步:输入C盘大小,这里版主将C盘设置为2G(2000M),注意:此处容量单位为M,切 记! 另外,可以用百分比来进行分割,如果输入50%,也将创建一个约2000M大小的分区。(视硬盘总容量决定!)
第十一步:C区建立完毕,按ESC键退回主菜单
第十二步:系统提示,没有分区被激活,也就是说没有活动分区
第十三步:选2进入激活页面。
第十四步:输入1将C分区激活。
第十五步:系统提示第一分区已激活,按ESC回主菜单
第十六步:到这里句选第二项,创建扩展分区
第十七步:此处一定要注意,把剩余所有空间都设置为扩展分区,经常有人在此处犯错,导致硬盘空间丢失,到此界面后直接按回车确认。
第十八步:扩展分区建立完毕,按ESC继续
第十九步:到这里才是逻辑分区(D、E、F……)盘的建立步骤,按顺序输入容量大小即可。我的D盘设为1G,没办法,可怜嘛!:)
第二十步:E盘把剩余的空间全分给它了。
最后,分区工作完成,按三次ESC键退到DOS界面,然后CTRL + ALT + DEL重新启动计算机使设置生效。最后就可以开始格式化,安装操作系统了
三 安装操作系统我想,各位已经说的很多了,你可以参考一下,再不明白可以用

自己搜一下
或到

看看
希望对你能有用...
参考技术A 这个问题很好解决,重做配置文件就行
1.你现在登陆的账户名应该是叫 罗政,你在控制面板-账户 新建一个管理员账户
2.重启电脑,登陆新建的管理员账户
3.进入c:\Documents and Settings\ 你可以看到一个 罗政的目录,你把名字改为罗政_BAK,意思是备份这个账户
4.退出新建的管理员账户 重新登陆罗政,问题就解决了。这时候c:\Documents and Settings\ 出现一个新的 罗政 文件夹
以前你桌面上的文件在 罗政_BAK 的desktop文件夹里面

如果你没有document and settings这个文件的话,那就是User这个文件夹了本回答被提问者采纳
参考技术B 系统配置文件出错了,可能是误删除了系统配置文件引起的,建议你重做一下系统,有用的文件移到D盘 参考技术C 可能程序出错,或者 IE 出错了,可以重装系统;
还有可能是中病毒了
参考技术D microsoft.net.framework错误,重新下载microsoft.net.framework,在装一次试试吧

以上是关于python高手求教,两个List怎么只改变一个List中元素的值不引起另一个List的变化的主要内容,如果未能解决你的问题,请参考以下文章

关于C语言的语法中类型转换的一个问题。求教C语言高手。

新人学BBOX,向高手求教……

python list 操作

Python从菜鸟到高手(17):改变函数参数的值

求教高手:怎么用TWAIN来控制扫描仪

求教高手如何java绘画出一条趋势线?