ppflying2000 发表于 2020-5-20 07:43:16

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:48:41

本帖最后由 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:14:10

本帖最后由 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:}


均昊山 发表于 2020-5-20 08:41:26

从0开始数起
list1.pop(2)的值等于5

list1 = 3   list1.pop(3)最后结果等于7
后面自己解一下就明白了

sunrise085 发表于 2020-5-20 09:45:34

你把pop和remove搞混了

pop函数的参数是列表元素的下标值;remove的参数值列表元素值
pop是直接按照下标进行定点删除;remove是根据元素值,删除第一个出现的元素,remove删除的可能不是你想删除的对应元素,假如:,若想删除第二个1,不能用 remove(1),因为这样删除的是第一个1

pop的参数是元素下标值,若没写参数,则删除最后一个元素,若下标超出范围则报错。list1.pop(list1)其实就是list1.pop(7),而 list1 长度是5,下标 7 超范围了,所以报错了

_荟桐_ 发表于 2020-5-20 12:42:15

pop的参数是元素占的位置
remove的参数才是元素的名称

ppflying2000 发表于 2020-5-20 16:16:02

heidern0612 发表于 2020-5-20 07:48
1、list1.pop(list1),分解看:list1是几?是3吧?list1.pop(3)是几?是7吧?




谢谢!

ppflying2000 发表于 2020-5-20 16:16:45

Twilight6 发表于 2020-5-20 08:14
pop() 里面填的是位置参数哦,若没填参数默认弹除最后一个元素

所以你的代码:


谢谢~

Twilight6 发表于 2020-5-20 16:17:57

ppflying2000 发表于 2020-5-20 16:16
谢谢~

{:10_287:}加油
页: [1]
查看完整版本: pop()相关