繁体   English   中英

用Python理解列表?

[英]List comprehension in Python?

我有这个清单:

a = [1,2,3,4,5]

我想从列表中删除每个元素。 我就是这样

for i in range(0,len(a)):
    del a[0] 

我可以在其中使用列表理解吗? 例如del a[0] for i in range(0,len(a))

列表推导用于创建列表,而不是销毁它们。 他们不是这项工作的正确工具。

如果要清除列表的内容,最快的方法是

del a[:]

这是切片删除。 省略的起点和终点默认为列表的起点和终点。

请注意,通常最好将列表替换为新列表:

a = []

即使a尚不存在,此方法也有效,并且对新列表的修改不会干扰需要旧列表的代码的任何其他部分。 这些属性通常(但并非总是)是理想的。

通常您根本不会使用循环来执行此操作。 要清除现有列表,请使用a[:] = []

不,您不能在列表推导中del组件。 您为什么首先要这样做? 列表理解是用于创建列表,而不是用于修改。

您可以将列表替换为使用列表理解创建的另一列表。

原因是列表理解需要一个表达式。 但是del是一个声明。

列表理解(来自功能编程,其中什么都没有改变)是用于构建列表的。 由于您似乎想清除现有列表的元素(而不是仅使用某些元素等来创建新列表),因此列表理解不是正确的工具。

就是说,列表理解可以被滥用来做到这一点:

[a.pop() for i in range(len(a))]

注意:这是一个坏主意(因为它使用列表理解来实现与预期目的完全不同的东西),我强烈建议您不要使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM