★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公眾號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/ )
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9798475.html
➤如果鏈接不是山青詠芝的博客園地址,則可能是爬取作者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持作者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Swift提供了三種主要的集合類型,稱為數組,集合和字典,用於存儲值集合。
數組是有序的值集合。
集是唯一值的無序集合。
字典是鍵值關聯的無序集合。
Swift中無法再使用傳統形式的for循環。
1 //傳統for循環形式不適用於Swift 2 for(單次表達式;條件表達式;末尾循環體){中間循環體;}
遍歷數組:可以使用for
- in
循環遍歷數組中的值。
1 let arrayStr:[String] = ["s","t","r","e","n","g","t","h","e","n","!"] 2 3 //方法1:根據元素順序遍歷 4 for item in arrayStr { 5 print(item) 6 } 7 8 //方法2:根據部分元素順序遍歷 9 for item in arrayStr[1...5] { 10 print(item) 11 } 12 13 //方法3:根據索引順序遍歷 14 for index in 0...(arrayStr.count - 1) { 15 print(arrayStr[index]) 16 } 17 18 //方法4:初始化數組並順序遍歷 19 for item in Array(1...10) { 20 print(item) 21 } 22 23 //方法5:stride函數 24 //from,to,by 最后一個值是 >(或<) to的值 25 //from,through,by 最后一個值是 >=(或<=) through的值 26 for index in stride(from: 0, to: arrayStr.count,by: 1 ) 27 { 28 print(arrayStr[index]) 29 }
如果不需要序列中的每個值,則可以使用下划線(_)代替變量名來忽略這些值。
1 let base = 3 2 let power = 10 3 var answer = 1 4 for _ in 1...power { 5 answer *= base 6 } 7 print("\(base) to the power of \(power) is \(answer)") 8 // Prints "3 to the power of 10 is 59049"
遍歷集合:可以使用for
- in
循環遍歷集合中的值。
1 let arrayStr:Set<String> = ["s","t","r","e","n","g"] 2 //輸出的順序是隨機的 3 for item in arrayStr { 4 print("\(item)") 5 }
Swift的Set
類型沒有定義的順序。要以特定順序迭代集合的值,請使用該sorted()
方法,該方法將集合的元素作為使用<
運算符排序的數組返回。
1 let arrayStr:Set<String> = ["s","t","r","e","n","g"] 2 //按照字母排序順序輸出 3 for item in arrayStr.sorted() { 4 print("\(item)") 5 }
遍歷字典(可單獨遍歷鍵、值、或鍵值)
可以用字典遍歷鍵值對for
- in
環。字典中的每個項都作為元組返回,您可以將元組的成員分解為臨時常量或變量,作為迭代的一部分:(key, value),
還可以通過訪問字典的鍵keys
和values
屬性來檢索字典的鍵或值的可迭代集合:
1 var direc: [Int: String] = [0:"s",1:"t",2:"r",3:"e",4:"n",5:"g"] 2 3 //按鍵值對遍歷順序遍歷 4 for (num, char) in direc.sorted(by: <) { 5 print("\(num): \(char)") 6 } 7 8 //按鍵遍歷順序遍歷 9 for num in direc.keys.sorted(by: <) { 10 print("\(num)") 11 } 12 13 //按值遍歷順序遍歷 14 for char in direc.values { 15 print("\(char)") 16 }
如果您需要使用帶有Array
實例的API的字典鍵或值,請使用keys
或values
屬性初始化新數組:
1 let nums = [Int](direc.keys) 2 print(nums) 3 //次序隨機 [4, 5, 2, 0, 1, 3] 4 5 let chars = [String](direc.values) 6 print(chars) 7 //次序隨機 ["n", "g", "r", "s", "t", "e"]
Swift的Dictionary
類型沒有定義的順序。要按特定順序迭代字典的鍵或值,請sorted()
在其keys
或values
屬性上使用該方法。
倒序遍歷 :reversed() 或 stride函數
Swift中標准庫中方法
1 //可以用來快速的枚舉數組中的內容,並用元組(index, value)接收 2 public func enumerated() -> EnumeratedSequence<Array<Element>> 3 4 //可以倒敘數組內容 5 public func reversed() -> ReversedRandomAccessCollection<Array<Element>>
當兩者結合使用用到索引時需要注意
1 let arrayStr:[String] = ["s","t","r","e","n","g","t","h","e","n","!"] 2 3 //索引元素值綁定一起倒序遍歷 4 for i in arrayStr.enumerated().reversed() { 5 print("\(i) ", terminator: "") 6 } 7 /* 8 (offset: 10, element: "!") (offset: 9, element: "n") (offset: 8, element: "e") (offset: 7, element: "h") (offset: 6, element: "t") (offset: 5, element: "g") (offset: 4, element: "n") (offset: 3, element: "e") (offset: 2, element: "r") (offset: 1, element: "t") (offset: 0, element: "s") 9 */ 10 11 //只元素值倒序遍歷,原索引不變 12 for i in arrayStr.reversed().enumerated() { 13 print("\(i) ", terminator: "") 14 } 15 /* 16 (offset: 0, element: "!") (offset: 1, element: "n") (offset: 2, element: "e") (offset: 3, element: "h") (offset: 4, element: "t") (offset: 5, element: "g") (offset: 6, element: "n") (offset: 7, element: "e") (offset: 8, element: "r") (offset: 9, element: "t") (offset: 10, element: "s") 17 */
倒序遍歷數組
1 let arrayStr:[String] = ["s","t","r","e","n","g","t","h","e","n","!"] 2 3 //方法1:根據元素倒序遍歷 4 for item in arrayStr.reversed() { 5 print(item) 6 } 7 8 //方法2:根據部分元素倒序遍歷 9 for item in arrayStr[1...5].reversed() { 10 print(item) 11 } 12 13 //方法3:根據索引倒序遍歷 14 for index in (0...(arrayStr.count - 1)).reversed() { 15 print(arrayStr[index]) 16 } 17 18 //方法4:初始化數組並倒序遍歷 19 for item in Array(1...10).reversed() { 20 print(item) 21 } 22 23 //方法4:初始化數組並倒序遍歷 24 for item in Array(1...10).reversed() { 25 print(item) 26 } 27 28 //方法5:stride函數 29 //from,to,by 最后一個值是 >(或<) to的值 30 //from,through,by 最后一個值是 >=(或<=) through的值 31 for index in stride(from: arrayStr.count - 1, through: 0,by: -1 ) 32 { 33 print(arrayStr[index]) 34 }
倒序遍歷集合
1 let arrayStr:Set<String> = ["s","t","r","e","n","g"] 2 //按照字母排序倒序輸出 3 for item in arrayStr.sorted().reversed() { 4 print("\(item) ", terminator: "") 5 } 6 //Print "t s r n g e"
倒序遍歷字典(可單獨遍歷鍵、值、或鍵值)
1 var direc: [Int: String] = [0:"s",1:"t",2:"r",3:"e",4:"n",5:"g"] 2 //按鍵值對倒序遍歷 3 for (num, char) in direc.sorted(by: <).reversed() { 4 print("\(num): \(char)") 5 }