Haskell中如何提取zip配对后元组列表的首个单个字符?
提取zip结果中的单个首字符方法
你定义了Haskell代码:
joinString = zip "aceg" "bdfh"
zip操作后得到的结果是:[('a', 'b'), ('c', 'd'), ('e', 'f'), ('g','h')]。你想要从中提取单个字符'a'、'c'、'e'、'g',尝试用fst(unzip joinString)得到的是字符串"aceg",想知道怎么获取单独的每个字符。
首先要明确:在Haskell里,字符串本质就是字符的列表,"aceg"和['a','c','e','g']是完全等价的。你得到的字符串本身就是单个字符的集合,直接按列表的方式操作就能拿到每个单独的字符。
给你几种具体的实现方式:
- 直接访问指定位置的单个字符:
比如取第一个字符用head (fst (unzip joinString)),取第三个字符(注意列表索引从0开始)用(fst (unzip joinString)) !! 2。 - 用列表推导式直接生成字符列表:
这个表达式和[c | (c, _) <- joinString]fst (unzip joinString)结果完全一致,得到的就是['a','c','e','g'],你可以直接遍历这个列表获取每个字符。 - 逐个处理每个字符(比如打印):
如果你需要对每个单独字符执行操作,比如打印出来,可以用:
执行后会依次输出每个单独的字符。map print (fst (unzip joinString))
内容的提问来源于stack exchange,提问作者Loren Beer
相关产品推荐
相关产品推荐

