相关疑难解决方法(0)

列表理解与lambda +过滤器

我碰巧发现自己有一个基本的过滤需求:我有一个列表,我必须通过项目的属性过滤它.

我的代码看起来像这样:

my_list = [x for x in my_list if x.attribute == value]
Run Code Online (Sandbox Code Playgroud)

但后来我想,这样写它会不会更好?

my_list = filter(lambda x: x.attribute == value, my_list)
Run Code Online (Sandbox Code Playgroud)

它更具可读性,如果需要性能,可以取出lambda来获得一些东西.

问题是:使用第二种方式有什么警告吗?任何性能差异?我是否完全错过了Pythonic Way™并且应该以另一种方式(例如使用itemgetter而不是lambda)来完成它?

python lambda functional-programming list filter

793
推荐指数
12
解决办法
65万
查看次数

Python 中的一行中的“for”循环

当我尝试在如下一行中使用for语句时,

def get_cubes(x):
ls=[]
ls.append(pow(item*3, 3)) for item in range(int((x-x%3)/3)+1)
return ls
Run Code Online (Sandbox Code Playgroud)

总是有一个错误:

File "<ipython-input-47-8c391c3d568a>", line 3
ls.append(pow(item*3, 3))  for item in range(int((x-x%3)/3)+1)
                             ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

但是当我用常规的for循环方法编写它时,它运行良好。为什么?

python for-loop

10
推荐指数
3
解决办法
9万
查看次数

标签 统计

python ×2

filter ×1

for-loop ×1

functional-programming ×1

lambda ×1

list ×1