Python 我试图从列表中删除所有其他元素,但它不起作用
输出为[0,4,18,10,11] 应该是什么时候:[0,4,9,11]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 ==
提前感谢。您不能从列表中删除项目,同时对其进行迭代,因为这会混淆迭代器。创建一个新列表并添加到其中,而不是从旧列表中删除项目,或者您可以使用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