我正在寻找类似于Python中的dict / list / set comprehensions的东西。在Python中你可以这样做:
[x+2 for x in list if x > 10]
和F#
[for x in list do if x > 10 yield x+2]
但在Python中,你也可以这样做:
{x+2 for x in list if x > 10}
生成集合,
{k: (v+10)/2 for k, v in list.items() if k > 5}
生成Dicts。在F#中是否存在任何等效(在功能方面和整体整洁方面)语法?
答案 0 :(得分:4)
有一个set
函数接受seq<_>
,所以你可以这样做:
set [for x in list do if x > 10 yield x+2]
与dict
相同。以下是相关文档:
set
:http://msdn.microsoft.com/en-us/library/ee353747.aspx
dict
:http://msdn.microsoft.com/en-us/library/ee353774.aspx
答案 1 :(得分:2)
基本上F#没有特殊的语法,但您可以使用数组或列表推导,并将结果传递给提供给标准库的函数。
let intSet = set [for x in list do if x > 10 yield x+2]
let intMap = dict [for (x, y) in list do if x > 10 yield (x,y+2)]