【问题标题】:Nim enumerate function like PythonNim 枚举函数,如 Python
【发布时间】:2018-06-15 16:29:06
【问题描述】:

Learning Nim 我喜欢它与 Python 的相似性(但速度很快)。在 Python 中我可以这样做:

item_index = [(idx, itm) for idx, itm in enumerate(row)]

我正在寻找一种方法来枚举一个 Nim 序列,所以我会这样写:

item_index = lc[(idx, itm) | (idx, itm <- enumerate(row))]

这个功能存在吗?我相信你可以创建它,也许可以使用 proc、模板或宏来创建它,但我仍然很新,而且这些似乎仍然很难自己创建。这是我的尝试:

iterator enumerate[T](s: seq[T]): (int, T) =
    var i = 0
    while i < len(s):
        yield (i, s[i])
        i += 1

【问题讨论】:

    标签: enumerate nim-lang


    【解决方案1】:

    我是 nim 的新手,我不确定你想要什么,但是... 如果您在for 语句中使用两个变量,您将获得索引和值:

    for x, y in [11,22,33]:
      echo x, " ", y
    

    给予:

    0 11
    1 22
    2 33
    

    HTH。

    【讨论】:

    • 这个工作原理的一些背景知识:当 Nim 看到一个带有两个循环变量的 for 循环时,它会尝试在给定的表达式上调用 pairspairs 运算符是在 system.nim 中为 openarray 定义的,它对 exactly 的作用与 enumerate 的作用相同。
    • 请注意,这不适用于所有可迭代对象。例如,如果您尝试使用start .. endcountup(start, end, step) 执行此操作,您将收到wrong number of variables 错误。
    • @ArthurKhazbs 你为什么要这样做?,OP 正在尝试迭代一个数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2015-08-08
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    相关资源
    最近更新 更多