如何在Nim中仅基于元组首元素对元组序列按字母排序?
Nim 序列排序方法
要对包含元组的序列按元组第一个元素排序,你可以利用Nim标准库的排序工具实现,以下是几种可行方式:
方式1:利用元组自然排序(简洁写法)
Nim的元组默认会按元素顺序依次比较,因此直接调用sorted方法就能得到按第一个元素排序后的新序列:
import algorithm let my_seq = @[("a", "hello"), ("c", "world"), ("b", "to")] let sorted_seq = my_seq.sorted echo sorted_seq # 输出:@[("a", "hello"), ("b", "to"), ("c", "world")]
方式2:自定义比较逻辑(灵活扩展)
如果需要明确指定排序依据(比如后续要调整排序规则),可以自定义比较函数:
import algorithm let my_seq = @[("a", "hello"), ("c", "world"), ("b", "to")] let sorted_seq = my_seq.sorted(proc(a, b: tuple[key: string, val: string]): int = cmp(a[0], b[0]) ) echo sorted_seq
方式3:原地排序(针对可变序列)
如果你的序列是用var声明的可变序列,可以直接调用sort过程原地修改:
import algorithm var my_seq = @[("a", "hello"), ("c", "world"), ("b", "to")] my_seq.sort echo my_seq
注意:sorted返回新序列,适合处理let声明的不可变序列;sort是原地修改,仅适用于var声明的可变序列。
内容的提问来源于stack exchange,提问作者Houdiee
相关产品推荐
相关产品推荐

