如果lst
是整数的列表,我想有Haskell的Python中的列表解析“其中”
[dif for i in range(1, len(lst)) where dif = lst[i]-lst[i-1] if dif < 5]
但很显然,绑定变量一样,在语法上不正确的(除了一个事实,即where
是从Haskell借来的)。 我可以做
[dif for i in range(1, len(lst)) for dif in (lst[i]-lst[i-1],) if dif < 5]
使差异在一个长度 - 一个可迭代。另一种选择:
[lst[i]-lst[i-1] for i in range(1, len(lst)) if lst[i]-lst[i-1] < 5]
此外,我可以定义一个中间列表的差异,然后过滤它。但这两种选择都不是很好。是否有一个很好的单线可以拥有我想要的?
Python中最好的一个是最后一个代码片段。 – 2014-10-31 19:50:45
为什么一个班轮?好奇... – wwii 2014-11-01 02:58:11
@wwii:并不是说它真的很重要,但是一个好的单线通常比一个更大的表达更容易理解。 – matiasg 2014-11-03 00:51:37