Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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 - Fatal编程技术网

Python 我试图从列表中删除所有其他元素,但它不起作用

Python 我试图从列表中删除所有其他元素,但它不起作用,python,Python,输出为[0,4,18,10,11] 应该是什么时候:[0,4,9,11] 提前感谢。您不能从列表中删除项目,同时对其进行迭代,因为这会混淆迭代器。创建一个新列表并添加到其中,而不是从旧列表中删除项目,或者您可以使用Python的切片语法在一个操作中完成此操作: def every_other (l): alist = [] alist = l for i in range (len (l)-1): print (i) if i % 2 ==

输出为[0,4,18,10,11] 应该是什么时候:[0,4,9,11]
提前感谢。

您不能从列表中删除项目,同时对其进行迭代,因为这会混淆迭代器。创建一个新列表并添加到其中,而不是从旧列表中删除项目,或者您可以使用Python的切片语法在一个操作中完成此操作:

def every_other (l):
    alist = []
    alist = l
    for i in range (len (l)-1):
        print (i)
        if i % 2 == 1:
            del (alist [i])
    print (alist)

every_other ([0, -12, 4, 18, 9, 10, 11, -23])

您不能从列表中删除项并同时遍历它,因为这会混淆迭代器。创建一个新列表并添加到其中,而不是从旧列表中删除项目,或者您可以使用Python的切片语法在一个操作中完成此操作:

def every_other (l):
    alist = []
    alist = l
    for i in range (len (l)-1):
        print (i)
        if i % 2 == 1:
            del (alist [i])
    print (alist)

every_other ([0, -12, 4, 18, 9, 10, 11, -23])

此外,您还可以使用列表理解,并根据列表的计数筛选列表:

def every_other(l):
    print l[::2]

此外,您还可以使用列表理解,并根据列表的计数筛选列表:

def every_other(l):
    print l[::2]
您正在删除的列表与您尝试迭代的列表相同。因此,当您的列表位于索引1时,您将删除-12您的新列表为[0,4,18,9,10,11,-23] 现在你达到了迭代的索引2,你的值是18,所以它不会被删除,同样的逻辑会继续,直到迭代完成

您正在删除的列表与您尝试迭代的列表相同。因此,当您的列表位于索引1时,您将删除-12您的新列表为[0,4,18,9,10,11,-23] 现在你达到了迭代的索引2,你的值是18,所以它不会被删除,同样的逻辑会继续,直到迭代完成

如果您只想迭代列表中的其他元素,那么该代码应该可以工作

但是,如果您想删除所有其他元素,那么您应该在打印或返回列表之前先删除这些元素

如果您只想迭代列表中的其他元素,那么该代码应该可以工作

但是,如果您想删除所有其他元素,那么您应该在打印或返回列表之前先删除这些元素


如果从列表中删除某些内容,则所有较高的条目都会向下移动。如果要执行此操作,可以从末尾向下循环
i
,而不是从开头向上循环。
dell[1::2]
应该在没有循环的情况下工作。如果从列表中删除某些内容,则所有较高的条目都会向下移动。如果您想这样做,可以从末尾向下循环
i
,而不是从开头向上循环。
dell[1::2]
应该可以在没有循环的情况下工作。
def every_other(l):
       return l[0::2]
def remove_every_other(my_list):
     del my_list[1::2]
     return my_list