gpt4 book ai didi

python - 为什么这段代码会失败?在for循环中将变量分配给自身列表

转载 作者:行者123 更新时间:2023-11-28 20:36:38 25 4
gpt4 key购买 nike

a = 'hello'
b = None
c = None
for x in [a, b, c]:
if isinstance(x, (basestring, dict, int, float)) or x is None:
x = [x]
a

返回 'hello',但应为 ['hello']。但是,这有效:

a = 'hello'
a = [a]
a

返回 ['hello']

最佳答案

要实现这一点,首先您必须了解您有两个不同的引用,a 和 x(针对每个元素),以及列表 [a,b,c] 的引用,仅在 for 循环中使用,并且再也不会了。

为了实现您的目标,您可以这样做:

a = 'hello'
b = None
c = None
lst = [a, b, c] #here I create a reference for a list containing the three references above
for i,x in enumerate(lst):
if isinstance(x, (str,dict, int, float)) or x is None: #here I used str instead basestring
lst[i] = [x]

print(lst[0]) #here I print the reference inside the list, that's why the value is now showed modified

['hello']

但正如我所说,如果您执行 print(a) 它将再次显示:

'hello' #here i printed the value of the variable a, wich has no modification

因为你从来没有对它做过任何事情。

看看这个问题,了解更多关于引用文献的信息 How do I pass a variable by reference?

关于python - 为什么这段代码会失败?在for循环中将变量分配给自身列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com