pop()相关
各位好!看到第11课遇到一个问题
>>> list1=
>>> list1.pop(2)
5
>>> list1=
>>> list1.pop(list1)
7
上面两个为什么结果会不同?list1不就是5吗?
另外
>>> list1=
>>> list1.pop(list1)
Traceback (most recent call last):
File "<pyshell#160>", line 1, in <module>
list1.pop(list1)
IndexError: pop index out of range
这又是为什么?
谢谢先! 本帖最后由 heidern0612 于 2020-5-20 07:49 编辑
1、list1.pop(list1),分解看:list1是几?是3吧?list1.pop(3)是几?是7吧?
2、list1.pop(list1),分解看:list1是几?是5吧?list1.pop(5)是个啥?你列表索引只到4,所以报超过索引的错误了。
本帖最后由 Twilight6 于 2020-5-20 08:24 编辑
pop() 里面填的是位置参数哦,若没填参数默认弹除最后一个元素
所以你的代码:
list1=[ 1, 3, 5, 7, 9]
#对应位置参数:0, 1 ,2,3,4
#所以 你 list1.pop(1)
# 是弹出 list1 的 第一个位置参数的元素
另一个代码:
list1=
# 对应位置参数 0 ,1, 2,3, 4
list = 3
# 所以:
list1.pop(list) = list1.pop(3)是移出第三个位置参数的元素 ,即是 7
最后一个代码:
list1=
# 对应位置参数 0 ,1, 2,3, 4
因为 list1 = 5
list1.pop(list1) = list1.pop(5)
超出列表最大索引值 即最大位置参数索引值为 4 而你想弹出 第 5 位 导致报错
如果帮助到你了,就给个最佳吧~{:10_287:}
从0开始数起
list1.pop(2)的值等于5
list1 = 3 list1.pop(3)最后结果等于7
后面自己解一下就明白了 你把pop和remove搞混了
pop函数的参数是列表元素的下标值;remove的参数值列表元素值
pop是直接按照下标进行定点删除;remove是根据元素值,删除第一个出现的元素,remove删除的可能不是你想删除的对应元素,假如:,若想删除第二个1,不能用 remove(1),因为这样删除的是第一个1
pop的参数是元素下标值,若没写参数,则删除最后一个元素,若下标超出范围则报错。list1.pop(list1)其实就是list1.pop(7),而 list1 长度是5,下标 7 超范围了,所以报错了 pop的参数是元素占的位置
remove的参数才是元素的名称 heidern0612 发表于 2020-5-20 07:48
1、list1.pop(list1),分解看:list1是几?是3吧?list1.pop(3)是几?是7吧?
谢谢! Twilight6 发表于 2020-5-20 08:14
pop() 里面填的是位置参数哦,若没填参数默认弹除最后一个元素
所以你的代码:
谢谢~ ppflying2000 发表于 2020-5-20 16:16
谢谢~
{:10_287:}加油
页:
[1]