当前位置: 首页 > 面试题库 >

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

吴唯
2023-03-14
问题内容

我已经看过这篇文章:
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个 项目?


问题答案:

在您的第一个函数中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()



 类似资料:
  • 问题内容: 我有一个清单,里面有空清单: 如何删除空列表,以便获得: 我尝试了list.remove(’‘),但这不起作用。 问题答案: 尝试 如果您想摆脱所有“虚假”的东西,例如空字符串,空元组,零,您也可以使用

  • 问题内容: 我有表,我想将它做成。我该怎么办? 问题答案: Python清单 list.pop(索引) 删除列表[索引] 这些都将修改您的原始列表。 其他人建议使用切片: 复制清单 可以返回一个子集 另外,如果要执行许多pop(0),则应查看collections.deque 从列表的左端提供更高的性能

  • 问题内容: 在每行末尾添加\ n,结束程序正常工作,仅在最后一行工作… 请举个例子,我在任何解决方案中都尝试不了什么,而我发现这里不适合我。 问题答案: 您可以分割最后一个字符: 也许更好的方法是使用字符串库:

  • 主要内容:del:根据索引值删除元素,pop():根据索引值删除元素,remove():根据元素值进行删除,clear():删除列表所有元素在 Python 列表中删除元素主要分为以下 3 种场景: 根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法; 根据元素本身的值进行删除,可使用列表(list类型)提供的 remove() 方法; 将列表中所有元素全部删除,可使用列表(list类型)提供的 clear() 方法。 del:根据索引值删除元素 del 是 Py

  • 问题内容: 如何在Python中按索引从列表中删除元素? 我找到了方法,但是说我想删除最后一个元素,该怎么做?似乎默认的搜索列表,但是我不希望执行任何搜索。 问题答案: 使用并指定要删除的元素的索引:

  • 问题内容: 假设我有一个数字列表: 迭代时,如何从列表中删除元素(例如3)? 我尝试了以下代码,但没有成功: 有任何想法吗? 谢谢,博达·西多(Boda Cydo)。 问题答案: 最好的方法通常是建设性地进行-建立所需项目的新列表,而不要删除不需要的项目。例如: 列表理解建立所需的列表,并分配到“全名单切片” ,确保你 不 只是一个重新绑定的名字,但完全替换 内容 ,所以影响是恒等于你想要的“清除