Python中的列表理解?

Python中的列表理解?,python,Python,我有以下清单: a=[1,2,3,4,5] 我想从列表中删除每个元素。我就是这样做的 for i in range(0,len(a)): del a[0] 我可以用列表理解吗?例如,对于范围(0,len(a))中的i,删除a[0]您通常根本不会使用循环来执行此操作。要清除现有列表,请使用a[:]=[]否,不能在列表中删除组件。你为什么要这么做?列表理解用于创建列表,而不是修改列表 您可以将列表替换为使用列表创建的其他列表 原因是列表理解需要一个表达式。但是,del是一个语句。列表理解

我有以下清单:

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

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

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

我可以用列表理解吗?例如,对于范围(0,len(a))中的i,删除a[0]

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

否,不能在列表中删除组件。你为什么要这么做?列表理解用于创建列表,而不是修改列表

您可以将列表替换为使用列表创建的其他列表


原因是列表理解需要一个表达式。但是,
del
是一个语句。

列表理解用于创建列表,而不是销毁列表。它们不是这项工作的合适工具

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

del a[:]
这是一个切片删除。省略的起点和终点默认为列表的起点和终点

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

a = []
即使
a
还不存在,这也可以工作,并且对新列表的修改不会干扰需要旧列表的代码的任何其他部分。这些属性通常(尽管不总是)是可取的。

列表理解(来自函数式编程,在函数式编程中没有任何变化)用于构建列表。由于您似乎希望清除现有列表中的元素(而不是创建仅包含部分元素的新列表等),因此列表理解不是正确的工具

也就是说,列表理解可能会被滥用:

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

注意:这是一个坏主意(因为它使用的列表综合功能与它的用途完全不同),我强烈建议您不要使用它。

为什么不干脆
del(a)
?@BurhanKhalid:因为它还可以做些别的事情?我知道我也可以这样做。但这只是一个演示示例。我基本上想学习列表理解。那么,在这个特定的例子中,我如何使用列表理解呢?@BurhanKhalid那么完整的列表已经消失了
dela[:]
将是一条路。@python程序员使用列表理解来实现这一点毫无意义。我能想到的唯一方法是使用具有副作用的LC:
[a.pop()用于xrange(len(a))]
。但同样,这会在内存中创建一个不必要的列表。我喜欢这个列表,我相信它比我建议的
a=[]
更明确。它实际上也会更改
a
引用的对象,而不是创建一个新的对象,并将
a
重新绑定到新的对象。考虑<代码> a= [1,2,3];b=a;a=[]与
a=[1,2,3];b=a;a[:]=[]