首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >即使在附加之后,值也不会改变。Python

即使在附加之后,值也不会改变。Python
EN

Stack Overflow用户
提问于 2020-09-06 09:43:58
回答 5查看 342关注 0票数 0

我对python非常陌生,我只是不明白为什么'a‘的值在附加了’橙色‘之后也不会改变。len(x)变成4,但“a”应该是len(x),保留3。谢谢你的时间。密码-

代码语言:javascript
运行
复制
x = ['apple', 'banana', 'cherry']
a = len(x)
print('list: ',x)
print('Len_x:',(len(x)))
print('a :',a)

x.append('orange')

print('list: ',x)
print('Len_x:',(len(x)))
print('a :',a)

输出量

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-09-06 10:41:46

大多数的答案解释了如何部分。让我解释一下python为什么会这样。

Python和所有其他语言一样,自上而下地读取脚本。这意味着,如果不显式更改,代码的上部存储或更改的内容将保持不变。

请考虑代码的第一部分:

代码语言:javascript
运行
复制
x = ['apple', 'banana', 'cherry']
a = len(x)
print('list: ',x)
print('Len_x:',(len(x)))
print('a :',a)

在这种情况下

  • 在第一行上,python 创建一个包含3个元素的数组。然后将数组分配给引用x。注意,数组是可变的(这意味着可以用下面编写的数组创建代码对它们进行修改)
  • 在第二行中,python计算x的长度(在本例中为3),并将计算出的整数(3)分配给引用a。注意,整数是不可变的(意思是不能更改下面的值)。还请注意,python分配了它忘记整数来自何处的值。(意味着python只知道有一个整数。它忘记了以下事实:这个整数表示数组的长度)
  • 在第三行,您打印x,它打印x引用的数组。
  • 在第四行,打印数组的长度。Python再次计算长度并打印它(它不打印引用的值)
  • 在第5行中,您可以打印a (这将打印由a打印的值)

现在考虑代码的第二部分:

代码语言:javascript
运行
复制
x.append('orange')

print('list: ',x)
print('Len_x:',(len(x)))
print('a :',a)
  • 当您追加一个新元素时,因为列表是可变的,所以在list的最后添加‘橙色’。
  • 所以python检索列表(现在已经修改了)并打印它。
  • 现在,您可以打印x的长度。Python再次计算x的长度(这将是4)并打印长度。
  • 现在打印a。a引用的值仍然是3。因为您还没有显式地更改a,而且由于python已经忘记了a的值是如何计算的,所以python只会返回它在上计算出来的初始值。

要纠正这种情况,您可以这样重新分配:

代码语言:javascript
运行
复制
a = len (x)

现在python将重新计算修改后的列表的长度,并将其重新分配给一个。因此python将计算新值(4);将其存储在RAM中;并引用一个指向值(4)。由于原始值(3)将不再被引用,该值(3)将被python丢弃。(最终由垃圾收集器从RAM中删除)

票数 1
EN

Stack Overflow用户

发布于 2020-09-06 09:49:34

我没有足够的声誉来评论:你必须改变一个勇士的价值,然后价值就会改变。

代码语言:javascript
运行
复制
x = ['apple', 'banana', 'cherry']
a = len(x)
print('list: ',x)
print('Len_x:',(len(x)))
print('a :',a)

x.append('orange')


#Add this to change for example:
a = len(x)

print('list: ',x)
print('Len_x:',(len(x)))
print('a :',a)
票数 3
EN

Stack Overflow用户

发布于 2020-09-06 09:51:08

答案很简单:

代码语言:javascript
运行
复制
x = ['apple', 'banana', 'cherry']
a = len(x)
print('list: ',x)
print('Len_x:',(len(x)))
print('a :',a)

x.append('orange')
a = len(x) # Note this extra line.

print('list: ',x)
print('Len_x:',(len(x)))
print('a :',a)

额外的行用于改变a的值。在开始时,a= len(x)使a= 3,因为len(x) =3。然而,在len(x)变成4之后,我们必须再次将len(x)的值赋给a(即make a= len(x))。不这样做意味着变量a停留在3。

Python程序和几乎所有其他编程语言都自上而下运行。一旦python运行了一个特定的行,它就会继续向下移动,而不会重复这一行(除非您特别要求Python解释器这样做)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63762759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档