我有关于列表理解的问题
[(x,y)| x<-[1..2], y<-[x..3], let z = x+y, odd z]
为什么评价为:
[(1,2),(2,3)]
z在哪里?
由于
答案 0 :(得分:4)
对于所有z odd&#34;,你的谓词是&#34; z = x + y。如果你&#34;展开&#34;流程:
z =谓词,y(x)表示:
x = 1,2
y (1) = 1,2,3
y (2) = 2,3
基于谓词过滤的值的组合:
x+y <= filter(z)
1+1 = 2 NO
1+2 = 3 OK
1+3 = 4 NO
2+2 = 4 NO
2+3 = 5 OK
所以ok答案是针对x = 1和y = 2且x = 2且y = 3 =&gt; [(1,2), (2,3)]