LeonardCohenX 发表于 2021-9-1 19:21:00

pop()用法出现错误

motorcycles = ['honda','yamaha','suzuki']
motorcycles.pop()
print(motorcycles)
print(motorcycles.pop())
print(motorcycles)


打印结果为:
['honda', 'yamaha']
yamaha
['honda']

这里面为啥第三次打印和第一次打印结果不同呢???这是咋回事,

louxinghao 发表于 2021-9-1 19:45:29

pop方法是修改原列表的,每次调用会删除最后一个元素,返回被删除的元素
motorcycles = ['honda','yamaha','suzuki']
motorcycles.pop()# 运行后,motorcycles 删掉了最后那个元素,此时motorcycles = ['honda','yamaha']
print(motorcycles)# 这里会打印被删除元素后的列表
print(motorcycles.pop())# 这里是第二次删除元素,会打印第二个被删除的元素
print(motorcycles)# 这里是打印被删除两次元素后的列表,所以只剩下最后一个元素了

也子 发表于 2021-9-1 19:51:58

因为第4行操作又经过了一次pop()函数,相当于是motorcycles = ['honda','yamaha'],求此时motorcycles.pop()的结果。如果想一样,应该重新赋值。

LeonardCohenX 发表于 2021-9-1 20:26:29

louxinghao 发表于 2021-9-1 19:45
pop方法是修改原列表的,每次调用会删除最后一个元素,返回被删除的元素

我看了你说的懂了,针布戳

505659671 发表于 2021-9-1 21:46:00

本帖最后由 505659671 于 2021-9-1 21:47 编辑

兄弟,这里面涉及到程序执行时的先后顺序问题,主要问题在这一句print(motorcycles.pop())执行前后发生本质的变化,这一句首先会执行motorcycles.pop(),再次执行print函数,而在执行motorcycles.pop()时,已经将['honda', 'yamaha']中的'yamaha'从列表压出来,所以当在print时,列表里面只有'honda'。对比第一次而言,其实是多执行了一次pop操作

我是热心的伟哥,期待下次相见!

LeonardCohenX 发表于 2021-9-4 16:08:50

505659671 发表于 2021-9-1 21:46
兄弟,这里面涉及到程序执行时的先后顺序问题,主要问题在这一句执行前后发生本质的变化,这一句首先会执行 ...

我懂了伟哥,你真牛B
页: [1]
查看完整版本: pop()用法出现错误