列表理解与迭代

Ilt*_*ltl 2 python list-comprehension

假设我有一个由整数元素组成的列表L. 我想构建一个列表T,对于每个索引,我在0..len(L)中包含项目L [i],前提是它使用python中的List comprehension大于0.

我尝试了以下命令来执行此操作

T=[L[i] if L[i]>0 for i in range(len(L))] 
Run Code Online (Sandbox Code Playgroud)

但我不断收到语法无效的错误.如何在python中使用List comprehension正确地做到这一点?

Mir*_*j50 6

你的语法错了:

L = [1,2,-4,5,-6,7,8,9]
T = [L[i] for i in range(len(L)) if L[i]>0] 
Run Code Online (Sandbox Code Playgroud)

输出:

[1, 2, 5, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

你也可以只遍历列表中的元素,不需要使用range.像这样 :T = [i for i in L if i>0]

记住:

什么时候只有if语法[expression for var in list if ...]

当两个ifelse是否有语法[expression1 if ... else expression2 for var in list]