我刚刚开始学习长期听到的python语言.我之前一直在和C合作.我发现python,因为现代脚本语言在各种任务上都非常简洁.
所以我想知道,如果我有一个列表foo = [1, 2, 3, 4, 5],我想从中挑出所有奇数bar.在C中,我可能会使用循环并检查每个数字foo并复制所需的元素bar.你们这些"蟒蛇式"的做法是什么?
mgi*_*nbr 20
bar = [x for x in foo if x % 2 == 1]
Run Code Online (Sandbox Code Playgroud)
这种形式称为"列表理解".在其基本形式中,它有4个部分:
您想要包含在输出列表中的内容.可以是涉及第二部分(下面)中定义的变量的任何表达式.在这种情况下,元素x,未经修改;
表示输入列表元素的变量或表达式.继为关键字,列表中的每个元素将被绑定到该变量(如果你的列表中包含复杂的对象,你可以用解构赋值为仅指的特定部分).在这种情况下,列表的每个项目都绑定到x;
输入列表.在in关键字后面,您可以从中获取元素的列表(或其他可迭代的).在这种情况下,foo;
元素必须满足的条件才能包含在结果中(可选).如果包含,则添加关键字if后跟表达式,以确定该元素是否将包含在输出列表中.在这种情况下,如果数字是奇数.
filter 功能是你正在寻找的:
bar = filter(lambda x: x % 2 == 1, foo)
Run Code Online (Sandbox Code Playgroud)
表达式lambda x: x % 2 == 1基本相当于
def isOdd(x):
return x % 2 == 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15923 次 |
| 最近记录: |