二维数组问题
大佬们,请问怎样才能在改数值的时候不影响其他列表?>>> lst1
[, ]
>>> lst2
[, ]
>>> lst3
[, ]
>>> lst4
[, ]
>>> lst2 = 8
>>> lst1
[, ]
>>> lst2
[, ]
>>> lst3
[, ]
>>> lst4
[, ]
>>> lst1 = [, ]
for i in range(2,5):
exec(f'lst'+str(i)+' = for i in lst1]')
>>> lst2 = 8
>>> lst1
[, ]
>>> lst2
[, ]
>>> lst3
[, ]
>>> lst4
[, ]
内嵌列表的 ID 相同,导致你更改一个内嵌列表元素使得所有指向此 ID 的变量都同时进行改变
>>> lst1
[, ]
>>>lst1 = 'a'
[['a',2,3],]
Twilight6 发表于 2021-6-4 19:11
内嵌列表的 ID 相同,导致你更改一个内嵌列表元素使得所有指向此 ID 的变量都同时进行改变
对呀我知道,要怎样才能避免这种情况呢 是BB啊 发表于 2021-6-5 16:07
对呀我知道,要怎样才能避免这种情况呢
像二楼这种方法就可以达到目的
逃兵 发表于 2021-6-4 18:20
for后面那一段看不懂{:5_107:} 本帖最后由 Twilight6 于 2021-6-5 16:17 编辑
是BB啊 发表于 2021-6-5 16:09
for后面那一段看不懂
exec 函数那可以直接这样写,可以不用加列表推导式:
lst1 = [, ]
for i in range(2,5):
exec(f'lst{i} = '+str(lst1))
lst1 = 8
print(lst1,'\n',lst2,'\n',lst3,'\n',lst4)
exec 函数可以读取在字符串中的代码语句,符合 Python 语法要求即可
这里 for 循环中进行字符串拼接 相当通过 exec 函数于执行这三个字符串:
'lst2 = [, ]'
'lst3 = [, ]'
'lst4 = [, ]'
Twilight6 发表于 2021-6-5 16:16
exec 函数那可以直接这样写,可以不用加列表推导式:
谢谢你,以后用着这种方法 是BB啊 发表于 2021-6-5 16:18
谢谢你,以后用着这种方法
没事,你去了解 exec 同时可以去了解下 eval
这两个函数都能执行字符串中的代码
Twilight6 发表于 2021-6-5 16:20
没事,你去了解 exec 同时可以去了解下 eval
这两个函数都能执行字符串中的代码
嗯嗯,我在看了
页:
[1]