我有这个列表理解:
[(x,y)| x<-[1..2], y<-[x..3], let z = x+y, odd z]
非常感谢!
答案 0 :(得分:5)
因此x从1变为2,y从x变为3。
所以对于第一个:
x = 1
y = 1
z = 1 + 1 = 2
z并不奇怪,因此,它没有添加。 然后:
x = 1
y = 2
z = 1 + 2 = 3
z现在很奇怪,所以它被添加了。 然后:
x = 1
y = 3
z = 1 + 3 = 4
z是偶数,而且没有添加。 然后:
x = 2
y = 2
z = 2 + 2 = 4
z是偶数。
然后:
x = 2
y = 3
z = 2 + 3 = 5
z是5,奇数,因此添加。
答案 1 :(得分:2)
你正在生成元组,其元素之和必须是奇数。这一行:
let z = x+y, odd z
将名称z
提供给总和x + y
,然后将此值与谓词odd
一起使用,以测试总和是否实际为奇数。 x
和y
的组合(odd z
评估为True
进入结果列表,其他组合将被删除。
请注意,y
集合的最低值是变量x
的实际值:
x <- [1..2]
y <- [x..3]
这是为了删除一些“重复”((2,1)
)。