haskell - 你怎么能用 Haskell 中的无限列表在一行中重写这个函数呢?
问题描述
我仍然对如何使用 Haskell 感到有些困惑。我理解这个概念,但如果给定这种 Python 函数,它怎么能写成一行?
def makeTupleList(ls):
mylist = []
counter = 1
for x in ls:
mylist.append((counter, x))
counter += 1
return mylist
解决方案
使用该zip
功能。它需要两个列表并将它们组合成对应对的列表。结果列表的长度将是最短列表的长度,这意味着您可以使用无限列表进行压缩,并且当另一个列表用完时它将停止。
makeTupleList :: [a] -> [(Int, a)]
makeTupleList ls = zip [1..] ls
推荐阅读
- javascript - 在 Visual Studio Code 中保存时避免自动缩进
- python - 如何使 bash 文件每 2 小时运行一次 python 脚本?
- java - 通过构造函数表达的不满足的依赖关系
- python - 使用 Regex + BeautifulSoup 抓取 XML 并存储到 Pandas
- python-3.x - 如何清除python中的pygame缓存事件
- javascript - Draft.js 中间文本占位符
- javascript - 移动菜单在点击时不会折叠
- android - 接收 SEND_ACTION,包括来自 Android 浏览器的图像
- python - Python如何编辑列表列中的所有行
- python - 上采样二维输出形状