日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swift基础——数组Array

發(fā)布時間:2024/1/8 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift基础——数组Array 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Swift基礎(chǔ)——數(shù)組Array

數(shù)組:使用有序列表存儲同一類型的多個值,相同值可出現(xiàn)在一個數(shù)組的不同位置。

數(shù)組簡介

首先,和String一樣我們也來看看他的一些Api方法
常規(guī)操作方法

reverse、reversed:數(shù)組反轉(zhuǎn)

reverse()在原數(shù)組操作,reversed()返回新的數(shù)組不會操作破壞原數(shù)組
swapAt:指定索引位置交換

記住startIndex這些索引是從“1”開始數(shù)的哦
數(shù)組添加合并

數(shù)組元素替換

數(shù)組增刪

當然刪除等這些運用加以其他操作就會變得很神奇,我們嘗試使用閉包語句來感受一下:

排序我們都知道默認升序,我們可以使用閉包使其降序排序:

到這里,尾部加ed大概應(yīng)該能看出來是什么意思了吧,既然氛圍鋪墊到這里了,那就再演示一個排序例子吧:

下面看看這些簡單一維數(shù)組用到的代碼示例吧

//import UIKitimport Foundation import Darwin//定義數(shù)組 var arrString = Array<String>() var arrFloat = Array<Float>() var arrFloat2 = [Float]() var arrString2 = [String]() //定義數(shù)組并賦值 var arrInt = [0 , 1 , 2 , 3 , 4 ] //查看數(shù)組中元素數(shù)量 arrInt.count //判空 arrInt.isEmpty //是否包含指定元素 arrInt.contains(3) //分別獲取數(shù)組首個和末尾元素 arrInt.first arrInt.last //分別獲取數(shù)組中最大和最小元素 arrInt.max(); arrInt.min(); //數(shù)組反轉(zhuǎn) arrInt.reverse() arrInt.reversed()//交換指定索引位置的元素 arrInt.swapAt(0, 1) arrInt.swapAt(arrInt.startIndex , arrInt.endIndex - 1) //打亂數(shù)組順序讓數(shù)組內(nèi)所有元素隨機排列 arrInt.shuffled() arrInt.shuffle() //數(shù)組可以直接進行元素合并 arrInt += [5] //數(shù)組添加元素末尾添加 arrInt.append(6) //把數(shù)組索引換成另一些元素 arrInt[2...4] = [7] arrInt arrInt[0] = 1arrInt //插入:在數(shù)組索引1位置插入10 arrInt.insert(10, at: 1) //刪除:刪除第一個元素索引0位置,并返回刪除后數(shù)組 arrInt.dropFirst() //刪除最后一個元素并返回被刪除后的元素 arrInt.popLast() arrInt //刪除指定位置元素 arrInt.remove(at: 1) //刪除素質(zhì)里的所有元素 arrInt.removeAll()var strArr = ["張鑫樂" , "張三" , "張員外" , "嫦娥" , "樂寶"] //使用閉包刪除所有“張”開頭的元素 strArr.removeAll{$0.hasPrefix("張")} strArrarrInt = [1 , 9 , 2 , 8 , 3 , 7 , 4 , 6 , 5] arrInt.sort() arrInt //閉包實現(xiàn)降序排序并返回排序后數(shù)組 let arrInt1 = arrInt.sorted(by: {$0 > $1}) arrInt arrInt1//我們設(shè)定字符串數(shù)組以字符串長度進行排序 var str = ["1" , "22" , "333" , "4444" , "55555"] str str.sort(by: {left , right inreturn left.count > right.count }) str

二維數(shù)組創(chuàng)建及數(shù)組遍歷

二維數(shù)組創(chuàng)建

嗯。。。。發(fā)現(xiàn)了吧本質(zhì)就是一維數(shù)組里面還有一個一維數(shù)組
數(shù)組遍歷

完了嗎?當然沒有,再看看其他幾種遍歷方式吧:

看出來Swift的包容性了吧,繼續(xù)看看其他的吧:
遍歷索引和值

forEach遍歷

數(shù)組遍歷基本就結(jié)束了,我們來關(guān)心一些其他的小問題,嗯。。。比如如何比較兩個數(shù)組差異:
difference:獲得差異

來瞅瞅這里用到的這些代碼示例吧:

//import UIKitimport Foundation//定義二維數(shù)組:直接賦值兩個一維數(shù)組 var arr1 = [1 , 2 , 3] var arr2 = [1 , 2 , 3] var arr = [arr1 , arr2]//定義二維數(shù)組并指定為整數(shù)類型 var arrInt = Array<Array<Int>>() //把那倆一維數(shù)組添加進來 arrInt.append(arr1) arrInt.append(arr2) arrInt //數(shù)組遍歷,循環(huán) for row in arrInt{for column in row{//print(column)} }//當然還有按索引遍歷 for i in 0..<arr1.count{print(arr1[i]) } //當然Swift嘛很隨意的,我們可以省略這個索引 for item in arr1{print(item) } //你以為這是Swift的極限?開玩笑,他甚至引入了sql語句的條件判斷 var strArr = ["張鑫樂" , "張三" , "李四" , "張大仙"] for item in strArr where item.hasPrefix("張"){print(item) }//遍歷數(shù)組索引和值 for (index , value) in strArr.enumerated(){print("\(index) : \(value)") } //forEach遍歷 strArr.forEach{item inprint(item) } //比較數(shù)組差異 var strArrCopy = ["張鑫樂" , "張三" , "李四" , "張大腳"] let dif = strArr.difference(from: strArrCopy) print(dif)

數(shù)組常用操作

字符串與數(shù)組的轉(zhuǎn)換

split:把字符串轉(zhuǎn)換為數(shù)組

joined:數(shù)組合并成字符串

zip:可以將兩個序列中的元素一一對應(yīng)的方式重新組合成一個序列

可是如果元素個數(shù)對應(yīng)不上怎么辦?直接看結(jié)果:

數(shù)組過濾

filter、allSatisfy、where、partition等

partition:定位排序,類似于快排中的定位數(shù)字

min、max:獲取序列中的最小值、最大值

氛圍到這了都,感受一下字典吧,后續(xù)會詳細介紹

prefix:數(shù)組截取

drop:顧名思義丟棄

數(shù)組降維

諾,顧名思義啦,就是把多位數(shù)組通過一些方法轉(zhuǎn)換為維度更低的數(shù)組
flatMap:獲取每個數(shù)組元素并放在一個一維數(shù)組里

最后看看這個部分用到的代碼示例吧:

//import UIKitimport Foundationlet str1 = "I have 8 girls" //以“ ”分割轉(zhuǎn)換為數(shù)組閉包轉(zhuǎn)換 let arr1 = str1.split{$0 == " "} arr1 //當然我們也可以不使用閉包,類似Java那樣就可 let arr2 = str1.split(separator: " ") arr2 //當然用閉包的話還有比Java更牛掰的后續(xù)會介紹閉包 let arr3 = str1.split{$0.isNumber}; arr3//以某字符合并數(shù)組 let str2 = arr2.joined(separator: " ")//介紹一個zip函數(shù) arr1 let arr4 = [1 , 2 , 3 , 4 , 5] let zip1 = zip(arr4, arr1) for (num , words) in zip1{print("\(num) : \(words)") }//filter var arr5 = ["張鑫樂","張曉澤","陳小理","白一曉","張三豐","佐佐木"] let arr6 = arr5.filter{$0.hasPrefix("張")} arr6 //allSatisfy:全部滿足 var arr7 = [1 , 2 , 3 , 4] var arr8 = [1 , 2 , 6 , 7] let isBig = arr7.allSatisfy({$0 < 5}) let isSmall = arr8.allSatisfy({$0 < 5}) isBig isSmall //where:條件處理類似sql,當然這個加以循環(huán)會有更多操作,此處我們只演示first與last //從前往后第一個>2的元素 let num1 = arr7.first(where: {$0 > 2}) num1 //從后往前第一個<6的元素 let num2 = arr8.last(where: {$0 < 6}) num2 //從前往后第一個2的元素索引下標 let index1 = arr7.firstIndex(of: 2) index1 //從后往前第一個2的元素索引下標 let index2 = arr7.lastIndex(of: 3) index2 //當然這個同樣也可以引入where就不展示了var arr9 = [1 , 2 , 3 , 8 , 9 , 7 , 6 , 5 , 4] let sort = arr9.partition {$0 > 5} arr9//最大值最小值 var arr10 = [1 , 2 , 3 , -8 , -9 , 7 , 6 , 5 , 4] let minNum = arr10.min(); let maxNum = arr10.max(); //當然還有abs求絕對值 let absNum = arr10.max {abs($0) < abs($1)} absNumlet arr11 = ["張鑫樂" : 520 , "張三豐" : 250 , "張?zhí)鞇?#34; : 110] let maxArr = arr11.max {$0.value < $1.value} maxArrarr10 //返回小于5的序列 let num3 = arr10.prefix{$0 < 5} num3 //返回索引下標前的元素組成序列,不包含當前及左閉右開 arr10 let num4 = arr10.prefix(upTo: 5) //返回n個元素組成的子序列 let num5 = arr10.prefix(4) //返回從數(shù)組開始到指定位置的子序列右也閉 let num6 = arr10.prefix(through: 5)arr10 //遍歷如果小于n跳過,當遇到>=7時返回其以及其后的元素作為數(shù)組 let num7 = arr10.drop{$0 < 7} num7 //丟棄前n個返回剩余元素組成的數(shù)組 let num8 = arr10.dropFirst(3)arr7 = [1 , 2 , 3 , 4] arr8 = [5 , 6 , 7 , 8] var arr12 = [arr7 , arr8] //flatMap:獲取每個數(shù)組元素并放在一個一維數(shù)組里 var arr13 = arr12.flatMap{$0} arr13 //當然這個有空值nil時也會體現(xiàn)出來 var arr14 = [5 , 6 , nil , nil] var arr15 = [arr7 , arr14] arr15 //compactMap:去空 var arr16 = arr15.flatMap {$0}.compactMap {$0} arr16

私貨彩蛋:我從不后悔對任何人好,哪怕是我看錯的人,哪怕我被辜負。因為,我對你好,不是因為你有多好,只是因為我很好 —— 慧海大師

總結(jié)

以上是生活随笔為你收集整理的Swift基础——数组Array的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。