当前位置: 首页 > 面试题库 >

如何在Swift中找到列表项的索引?

吴嘉禧
2023-03-14
问题内容

我正在尝试item index通过搜索找到一个list。有人知道该怎么做吗?

我看到了list.StartIndexlist.EndIndex但是我想要类似python的东西list.index("text")


问题答案:

由于Swift在某些方面要比面向对象的功能更强大(并且Array是结构而不是对象),因此请使用“
find”函数对数组进行操作,该数组将返回可选值,因此请准备处理nil值:

let arr:Array = ["a","b","c"]
find(arr, "c")!              // 2
find(arr, "d")               // nil

Swift 2.0更新:

find Swift 2.0不再支持旧功能!

使用Swift 2.0,Array可以使用扩展中定义的函数CollectionTypeArray实现)来找到元素的索引:

let arr = ["a","b","c"]

let indexOfA = arr.indexOf("a") // 0
let indexOfB = arr.indexOf("b") // 1
let indexOfD = arr.indexOf("d") // nil

此外,另一个扩展支持在数组中找到满足谓词的第一个元素CollectionType

let arr2 = [1,2,3,4,5,6,7,8,9,10]
let indexOfFirstGreaterThanFive = arr2.indexOf({$0 > 5}) // 5
let indexOfFirstGreaterThanOneHundred = arr2.indexOf({$0 > 100}) // nil

请注意,这两个函数会像find以前一样返回可选值。

Swift 3.0更新:

注意indexOf的语法已更改。对于符合条件的物品,Equatable可以使用:

let indexOfA = arr.index(of: "a")

有关该方法的详细文档,请参见https://developer.apple.com/reference/swift/array/1689674-index

对于不符合条件的数组项,Equatable您需要使用index(where:)

let index = cells.index(where: { (item) -> Bool in
  item.foo == 42 // test if this is the item you're looking for
})

Swift 4.2的更新:

在Swift
4.2中,index不再使用它,而是将其分开firstIndexlastIndex进行更好的说明。因此,根据您要查找的项目的第一个还是最后一个索引:

let arr = ["a","b","c","a"]

let indexOfA = arr.firstIndex(of: "a") // 0
let indexOfB = arr.lastIndex(of: "a") // 3


 类似资料:
  • 我试图通过搜索来查找。有人知道怎么做吗? 我看到有但我想要类似python的。

  • 问题内容: 我有一个清单清单: 搜索列表并返回其中一项的位置的最干净方法是什么? 我已经看过该方法,但是似乎并没有在列表中解压缩列表。 给出:,不是我所期望的… 问题答案: 我会做这样的事情: 这将返回一个元组列表,其中第一个索引是第一个列表中的位置,第二个索引是第二个列表中的位置(注意:您要查找的颜色,即)。 对于问题中的示例,返回值为: 如果您只需要懒惰地找到找到颜色的第一个位置,则可以使用以

  • 本文向大家介绍如何在Python的列表中找到可用对象的索引?,包括了如何在Python的列表中找到可用对象的索引?的使用技巧和注意事项,需要的朋友参考一下 如果只需要对象的第一个索引,则只需在列表上使用index方法。它接受您需要其位置的对象。请注意,如果在列表中未找到element,则将引发错误,需要使用try .. Expect处理。   示例 输出结果 这将给出输出- 如果要打印所有出现的对

  • 问题内容: 我有一个清单: 我希望能够在输入时找到的职位编号。例如,如果键入,我希望程序打印出来。目前,我只能通过使用 更正:我希望程序打印出String在列表中的位置。我有职位,如果我知道的话。但是,我该怎么做相反呢? 有没有办法顺利做到这一点?提前致谢。 问题答案: 的反向是 方法 返回指定元素在此列表中首次出现的索引;如果此列表不包含该元素,则返回-1。

  • 问题内容: 我明白 将导出列表中最常见的元素 但是如何在不使用辅助函数的情况下导出列表列表中最常见的元素? 例如 输出应等于。 当我尝试 它写道 谁能帮帮我吗? 问题答案: 有很多方法,但是我想让您知道,标准模块中有一些用于这类事情的好工具,例如: 或者,您可以(有点)将当前解决方案用于每个子列表:

  • 问题内容: 我很新,我希望它不太明显,但是我似乎无法为以下问题找到一个简短而准确的答案。 我有两个清单: 我想查找第二个列表()的所有索引何时在第一个列表()中,以便得到如下内容: b在a中的索引:或 问题答案: 具有列表理解: 或使用for循环: