[Swift]遍歷集合類型(數組、集合和字典)


★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公眾號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/ 
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9798475.html 
➤如果鏈接不是山青詠芝的博客園地址,則可能是爬取作者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持作者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

Swift提供了三種主要的集合類型,稱為數組,集合和字典,用於存儲值集合。

數組是有序的值集合。

集是唯一值的無序集合。

字典是鍵值關聯的無序集合。

../_images/CollectionTypes_intro_2x.png

Swift中無法再使用傳統形式的for循環。

1 //傳統for循環形式不適用於Swift
2 for(單次表達式;條件表達式;末尾循環體){中間循環體;}

遍歷數組:可以使用forin循環遍歷數組中的值。

 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"

遍歷集合可以使用forin循環遍歷集合中的值

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 }

遍歷字典(可單獨遍歷鍵、值、或鍵值)

可以用字典遍歷鍵值對forin環。字典中的每個項都作為元組返回,您可以將元組的成員分解為臨時常量或變量,作為迭代的一部分:(key, value),還可以通過訪問字典的鍵keysvalues屬性來檢索字典的鍵或值的可迭代集合:

 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的字典鍵或值,請使用keysvalues屬性初始化新數組

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()在其keysvalues屬性使用該方法

倒序遍歷 :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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM