无标题无名氏No.63952357 只看PO
2024-10-02(三)11:40:35 ID:4kTyLpO 回应
发现一个问题( ゚∀。)Python的
>>>a=b=[]
>>>a.append(1)
这个时候a和b两个列表都会添加一个1( ゚∀。)是因为连等定义共用一个内存地址吗
无标题无名氏No.63953825
2024-10-02(三)14:37:11 ID: 4kTyLpO (PO主)
>>No.63953768
>>No.63953756
( ゚∀。)b好用诶,但是嵌套的情况下好像只有最外层列表的地址不同,列表内部的列表还是一样的
无标题无名氏No.63953853
2024-10-02(三)14:39:50 ID: 4WVuFwF
>>No.63953825
那就用json库,可以安全的序列化以及反序列化包含基础类型的dict和list
无标题无名氏No.63953862
2024-10-02(三)14:40:22 ID: YiXpQ4t
>>No.63953725
python没有内存地址这个概念,不建议把这个放在考虑范围内
上面肥哥写的几种方法翻译成c都是你期望的新建vector往里插元素
而eval(str())实际运行是先转字符串,再调解释器,再翻译代码,再执行上述vector操作,就多此一举。而且eval这个函数有大量安全性问题(字符串注入之类的),能不用就不用
无标题无名氏No.63953882
2024-10-02(三)14:42:35 ID: YiXpQ4t
如果确保只有list dict就用deepcopy
如果只是需要二维数组,里面都是同类型元素,用numpy
无标题无名氏No.63953887
2024-10-02(三)14:43:11 ID: 4kTyLpO (PO主)
>>No.63953873
因为我只见过没用过,只知道很简洁,看到能在括号里塞直接运行的简洁表达式就瞎蒙了( ゚∀。)
无标题无名氏No.63953896
2024-10-02(三)14:44:24 ID: 4Sv4ob7
>>No.63953844
b=(a:=[])[:]
里面这个:=叫海象运算符,可以给a赋值的同时作为表达式
这一段相当于
a=[]
b=a[:]