gpt4 book ai didi

swift - sorted() 中元素的索引

转载 作者:搜寻专家 更新时间:2023-11-01 06:10:01 24 4
gpt4 key购买 nike

当你打电话时

sorted(<#source: C#>, <#isOrderedBefore: (C.Generator.Element, C.Generator.Element) -> Bool##(C.Generator.Element, C.Generator.Element) -> Bool#>)

您可以通过$0$1 访问两个源元素以进行比较。但是我如何确定从源头获取它们的索引?

最佳答案

您可以向 sorted 传递元素的索引,而不是元素的集合:

let a = ["hello","i","must","be","going"]
let idxs = sorted(indices(a)) { a[$0] < a[$1] }
// produces [3, 4, 0, 1, 2]

或者,如果您不喜欢捕获 a 并希望将元素本身传递到闭包中,您可以传入索引和元素对的序列,如下所示:

let pairs = sorted(Zip2(indices(a),a)) {
$0.1 < $1.1
}

请注意,结果将是 (index,element) 对的数组:[(3, be), (4, going), (0, hello), (1, i), (2, 必须)]。如果你想把它变回元素,你可以做 map(pairs) { $0.1 }

此外,如果您采用 just-indices 路线并希望稍后将其转换回元素,您可以使用 PermutationGenerator 来实现:

let values = PermutationGenerator(elements: a, indices: idxs)
println(" ".join(values)) // prints "be going hello i must"

关于swift - sorted() 中元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27695529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com