Woo*_*per 14 python list-comprehension python-2.7
如何在列表推导中执行以下操作?
test = [["abc", 1],["bca",2]]
result = []
for x in test:
if x[0] =='abc':
result.append(x)
else:
pass
result
Out[125]: [['abc', 1]]
Run Code Online (Sandbox Code Playgroud)
试试1:
[x if (x[0] == 'abc') else pass for x in test]
File "<ipython-input-127-d0bbe1907880>", line 1
[x if (x[0] == 'abc') else pass for x in test]
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
试试2:
[x if (x[0] == 'abc') else None for x in test]
Out[126]: [['abc', 1], None]
Run Code Online (Sandbox Code Playgroud)
尝试3:
[x if (x[0] == 'abc') for x in test]
File "<ipython-input-122-a114a293661f>", line 1
[x if (x[0] == 'abc') for x in test]
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
Ale*_*lex 31
该if需求是在年底,你不需要pass在列表理解.只有if满足条件才会添加该项,否则将忽略该元素,因此pass在列表推导语法中隐式实现.
[x for x in test if x[0] == 'abc']
Run Code Online (Sandbox Code Playgroud)
为完整起见,此声明的输出为:
[['abc', 1]]
Run Code Online (Sandbox Code Playgroud)
作为Jaco答案的补充; 很高兴知道这个filter命令,因为你基本上想要的是过滤一个列表:
filter( lambda x: x[0]=='abc', test)
Run Code Online (Sandbox Code Playgroud)
返回:
filter用list()构造函数包装上面的函数.| 归档时间: |
|
| 查看次数: |
9481 次 |
| 最近记录: |