看一下我写的这段python代码:
return map(lambda x: x[1],
filter(lambda x: x[0] == 0b0000,
my_func(i)
)
)
(希望它不言自明)
我想知道python是否有更好的方法吗?
几个月前我学过python,编写了几个脚本,之后就没用过了。它让我处于一个奇怪的学习地点,因为我知道我想做的事情,但没有新手本能找到“正确”的方式。我希望这个问题会让我回到正轨......答案 0 :(得分:9)
我认为你想要一个列表理解:
[x[1] for x in my_func(i) if x[0] == 0]
列表推导是一种非常常见的Python习语。
答案 1 :(得分:2)
您可以使用以下内容:
return [x[1] for x in my_func(i) if x[0] == 0b0000]
很多人会称之为“更好”,因为它更短,更明显。
(我很想考虑把它变成一个简单的循环和if语句。函数编程很好但是简单的循环也很好。)
答案 2 :(得分:1)
如果您使用Python 3.x编写,那么您可以编写一个有效的生成器表达式,例如:return (x[1] for x in my_func(i) if not x[0])
答案 3 :(得分:1)
在python 3.x中,您可以使用解压缩来避免使用x[0]
和x[1]
。
如果你只想循环结果一次,你可以考虑返回一个生成器表达式而不是列表推导:
return (y for x,y,*z in my_func(i) if x == 0b0000)