小编典典

Python:如何从列表中删除/删除第n个元素?

python

我已经看过这篇文章:[Python:通过删除每个第n个元素从现有列表构建新列表,但是由于某些原因,它对我不起作用:

我这样尝试:

def drop(mylist, n):
    del mylist[0::n]
    print(mylist)

此函数需要一个列表和n。然后,它使用列表中的n步删除第n个元素,并打印结果。

这是我的函数调用:

drop([1,2,3,4],2)

错误的输出:
[2, 4]代替[1, 3]


然后我从上面的链接尝试了一个变体:

def drop(mylist, n):
    new_list = [item for index, item in enumerate(mylist) if index % n != 0]
    print(new_list)

再次,函数调用:

drop([1,2,3,4],2)

给了我同样的错误的结果: [2, 4]不是[1, 3]


如何正确地从列表中删除/删除/删除 第n个 项目?


阅读 516

收藏
2021-01-20

共1个答案

小编典典

在您的第一个函数中mylist[0::n][1, 3]因为0::n意味着第一个元素为0,其他元素在 一个之后的第n
元素中。正如Daniel所建议的,您可以使用mylist[::n]n 元素。

在您的第二个函数中,索引从0开始且0 % 0为0,因此它不会复制第一个元素。第三个元素(2 % 2为0)相同。所以你要做的就是new_list = [item for index, item in enumerate(mylist) if (index + 1) % n != 0]

提示:您可能希望在此类函数中使用return而不是print()

2021-01-20