Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除Python中其他列表中的列表元素_Python_Python 3.x - Fatal编程技术网

删除Python中其他列表中的列表元素

删除Python中其他列表中的列表元素,python,python-3.x,Python,Python 3.x,在做一些与列表和函数相关的Python练习时,我遇到了以下代码: list = [0, 1, 2, 3, 4] def function (lst): del lst[lst[3]] return lst print (function (list)) 产生以下输出: [0, 1, 2, 4] 但是,在下面的代码中,会发生一些不同的情况: list = [0, 1, 4, 9, 16] def function (lst): del lst[lst[3]]

在做一些与列表和函数相关的Python练习时,我遇到了以下代码:

list = [0, 1, 2, 3, 4]


def function (lst):
    del lst[lst[3]]
    return lst


print (function (list))
产生以下输出:

[0, 1, 2, 4]
但是,在下面的代码中,会发生一些不同的情况:

list = [0, 1, 4, 9, 16]


def function (lst):
    del lst[lst[3]]
    return lst


print (function (list))
它输出以下错误:

Traceback (most recent call last):
  File "...", line 9, in <module>
    print (function (list))
  File "...", line 5, in function
    del lst[lst[3]]
IndexError: list assignment index out of range

Process finished with exit code 1
回溯(最近一次呼叫最后一次):
文件“…”,第9行,在
打印(功能(列表))
文件“…”,第5行,在函数中
del lst[lst[3]]
索引器:列表分配索引超出范围
进程已完成,退出代码为1
在这种情况下,它只“允许”我删除元素[2],结果是:
[0,1,4,9]

在这种情况下,我不太理解列表中的列表的用法,以及为什么有时它执行时好像只有一个列表;其他时候,“内部”列表的长度较小。 如果有人能澄清这个新手问题,我将不胜感激


提前谢谢你

这是因为lst[lst[3]]表示转到index=lst[3]。例如,在第一个示例中,lst[3]=3 so lst[lst[3]]=lst[3],但在第二个示例中,lst[3]=9 so lst[lst[3]=lst[9],但数组的长度是5,这就是索引超出范围异常的原因。

list=[0,1,2,3,4]
def功能(lst):
德尔一世[lst[3].#可以这样做,因为lst[3]的值为3
#所以基本上你删除了第四项
返回lst
打印(功能(列表))

实际上,您在这里所做的是根据列表中的值为列表编制索引

因此,如果
list=[0,1,4,9,16]
list[3]
等于
9
(第四个元素)


如果调用
list[list[3]]
实际上是在调用超出范围的
list[9]

在第二个实例中,您会看到索引超出范围错误,因为del方法正在尝试查找列表中的第9个元素。是这样的:

list = [0, 1, 4, 9, 16]


def function (lst):
    del lst[lst[3]] # Here, python first evaluates lst[3] -> 3rd element from list. Which is 9. And then, evaluates del lst[9] -> tries to find 9th element in list, which doesn't exist. 
    return lst


print (function (list))
执行此操作时:

list = [0, 1, 4, 9, 16]


def function (lst):
    del lst[lst[2]] # lst[2] evaluates to 2nd element from list, which is 4, and del lst[4] evaluates to 4th element in the list, which is 16 and deletes 16 from list.
    return lst


print (function (list))

如果需要删除列表索引3处的数字

list = [0, 1, 4, 9, 16]
def function (lst):
    del lst[3]
    return lst

print (function(list))
[0, 1, 4, 16]
如果执行
lst[lst[3]]
,首先它会在lst索引3处找到数字,其中值为9,删除
列表[9]
会给出索引超出范围的错误,因为lst的长度为5:

list = [0, 1, 4, 9, 16]
def function (lst):
    del lst[3]
    return lst

print (function(list))
[0, 1, 4, 16]