scala學習(陣列,元組)
1. 陣列相關操作
- 如果需要一個長度不變的陣列,可以用Scala中的Array,提供初始值時不要使用new
val nums = new Array[Int](10) //10個整數的陣列,所有元素初始化為0
val s = Array("hello","world") //提供初始值時,不需要使用new
- 對於長度按需要變化的陣列,可以使用Scala中的ArrayBuffer
import scala.collection.mutable.ArrayBuffer
val a = new ArrayBuffer[Int] //一個空的緩衝陣列,準備存放整數
b += 1 //用+=在緩衝陣列尾部新增元素
b += (1,2,3) //在尾端新增多個元素,用括號括起來
b ++= Array(8,13,21) //用++=操作符追加任何集合
b.trimEnd(5) //移除最後5個元素
b.insert(2,6) //在下標為2元素之前插入6,這種操作並不高效
b.remove(2) //移除下標為2的元素
b.remove(2,3) //移除下標為2的元素以及他後面的2個元素,一共3個元素
- 有時需要構建一個Array,但不知道最終需要裝多少元素,可以先構建一個緩衝陣列,然後呼叫
b.toArray
。呼叫a.toBuffer
可以將一個數組a轉化成一個緩衝陣列 - 遍歷陣列和緩衝陣列,可以用相同的程式碼處理這兩種資料結構
for (i <- 0 until a.length){
...
}
如果想要每兩個元素一跳
for (i <- 0 until (a.length,2)){
...
}
如果要從陣列的尾端開始
for (i <- (0 until a.length).reverse){
...
}
- 陣列轉換,從一個數組或緩衝陣列出發,以某種方式對它進行轉換是很簡單的。這些轉換動作不會修改原始陣列,而是產生一個全新的陣列。
val a = Array(2,3,5,7,11)
val result = for (i <- a) yield 2 * i //result是Array(4,6,10,14,22)
for (...) yield
迴圈建立了一個型別與原始集合相同的新集合。從陣列出發,得到的是另一個數組,從緩衝陣列出發,得到的是另一個緩衝陣列
- 常用演算法
sum方法,元素型別必須是數值型別
Array(1,7,2,9).sum //ArrayBuffer同樣適用
max和min方法:輸出陣列或緩衝陣列中最大和最小的元素,元素必須支援比較操作
sorted方法:將陣列或緩衝陣列排序並返回經過排序的陣列或緩衝陣列,不會修改原始版本。sortWith方法,可以提供比較函式
val b = ArrayBuffer(1,7,2,9)
val bSorted = b.sorted //bSorted是ArrayBuffer(1,2,7,9)
val bDec = b.sortWith(_ > _) //ArrayBuffer(9,7,3,1)
- 顯示陣列和緩衝陣列的內容,可以用mkString方法,它允許你指定元素之間的分隔符
val a = Array(1,2,7,9)
a.mkString(" and ") //"1 and 2 and 7 and 9"
- 多維陣列,通過陣列的陣列來實現,Double的二維陣列型別為
Array[Array[Double]]
,構造這樣一個數組可以用ofDim方法
val matrix = Array.ofDim[Double](3,4) //3行,4列
2. 對映與元組
- 對映是鍵/值 對偶 的集合,對偶是一個
n = 2
的元組 - 構造對映
不可變的Map[String,Int]
val scores = Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8)
val scores = Map(("Alice" , 10) , ("Bob" , 3) , ("Cindy" , 8))
可變對映
val scores = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8)
- 用
()
來查詢某個鍵對映的值
val bobsScore = scores("Bob")
如果對映並不包含請求中是用的鍵,則會丟擲異常
- 檢查對映中是否有某個指定的鍵,可以用contains方法
- 更新對映中的值。在可變對映中,你可以更新某個對映的值,或者新增一個新的對映關係
scores("Bob") = 10 //更新鍵"Bob"對應的值,假設scores是可變的
scores("Fred") = 7 //增加新的鍵/值對偶到scores
scores += (("Bob", 10) , ("Fred",7)) //增加多個關係用+=操作符
scores -= "Alice" //移除某個鍵和對應的值用-=操作符
對於不可變對映
val newScores = scores + (("Bob",10) , ("Fred",1)) //更新Bob,增加Fred
scores = scores - "Alice" //移除某個鍵
- 迭代對映
遍歷對映中所有的鍵值對偶
for ((k,v) <- 對映) {
處理k和v
}
訪問鍵或值
scores.keySet //一個類似Set("Bob" , "Alice")的集
scores.values
反轉一個對映
for ((k,v) <- 對映) yield (v,k)
- 元組(tuple)
元組的值是通過將單個的值包含在圓括號中構成的,例如:
val t = (1,3.14,"Fred") //型別為Tuple(Int,Double,java.lang.String)
用_1,_2,_3訪問其組元,元組的個組元從1開始
- 元組可以用於函式需要返回不止一個值的情況
- zip方法將多個值綁在一起
val symbols = Array("<","-",">")
val counts =Array(2,10,1)
val pair = symbols.zip(counts) //輸出Array(("<",2),("-",10),(">",2))
相關推薦
scala學習(陣列,元組)
1. 陣列相關操作 如果需要一個長度不變的陣列,可以用Scala中的Array,提供初始值時不要使用new val nums = new Array[Int](10) //10個整數的陣列,所有元素初始化為0 val s = Array("hello
Scala學習筆記之元組`Tuple`
Scala學習筆記之元組Tuple 元組是Scala提供的一種特殊的資料結構,或者說是一塊語法糖,它允許多個不同型別的元素組合在一起被使用,如下所示: val tup = (1, 3.14, "元組", true) 這是一個四元組,由4個元素組成。Scal
Scala 陣列(Array),列表(List),元組(Tuple),集(Set),對映(Map),迭代器(Iterator)
1. 陣列(Array) 陣列是程式設計中經常用到的資料結構,一般包括定長陣列和變長陣列。本教程旨在快速掌握最基礎和常用的知識,因此,只介紹定長陣列。 定長陣列,就是長度不變的陣列,在Scala中使用Array進行宣告,如下: val intValue
學校學習ios教程筆記,第四節swift中可變陣列和不可變陣列以及元組的概念與操作
// // main.swift // Swift第四節 // // Created by lanou on 16/10/24. // Copyright (c) 2016年 lanou. A
<python全棧開發基礎>學習過程筆記【6d】列表,字典,元組,知識點復習
ima 技術分享 筆記 python nbsp .com 復習 png cnblogs 、 <python全棧開發基礎>學習過程筆記【6d】列表,字典,元組,知識點復習
大資料之scala(二) --- 對映,元組,簡單類,內部類,物件Object,Idea中安裝scala外掛,trait特質[介面],包和包的匯入
一、對映<Map> ----------------------------------------------------- 1.建立一個不可變的對映Map<k,v> ==> Map(k -> v) scala> val map
學習筆記四 檔案讀寫,集合,元組,函式
一、檔案讀寫幾種模式總結: 讀模式: r 開啟不存在的檔案會報錯、不能寫(不能呼叫write方法),可以讀(能呼叫read方法) 寫模式: w # 1、開啟不存在的檔案,會新建一個檔案,但每次開啟都會清空原有檔案內容 # 2、不能讀(不能呼叫read方法),可以寫(能呼叫write方法)
Python基礎學習!容器,列表,元組,字典與集合!(1)
本文是容器 列表知識的筆記! 元組&列表 元組:是不可變的,值被固定元組中就不可以再進行改變! 列表:是可變的,意味著可以隨意插入或者刪除其中的元素 函式呼叫格式: 列表名.函式名(引數)#元素的話要帶著單引號!大多是這樣! ‘,’.join(a)這個連線函式,用法
python學習篇04 - 列表,元組
1、列表 定義:能裝物件的物件 在python中使用[] 來描述列表,內部元素用逗號隔開,對資料型別沒有要求。 列表存在索引和切片,和字串的操作是一樣的
Python入門學習筆記————09(元組,集合,字典)
關於元組的函式 以下看程式碼 In [5]: #len:獲取元組長度1 t = (1,2,3,4,4) len(t) Out[5]: 5 In [6]: #max,min:最大值,最小值 #如果
Python入門學習筆記————08(list函式,元組)
#傳值與傳地址的區別 #對於簡單的數值,採用傳值的操作,即在函式內的操作不影響外面的變數 #對複雜的變數,採用傳遞地址的操作,此時進行的操作即是對函式本身的操作 def a(n): n[2]=300 print(n) return None
Python學習之路(2)——標準資料型別續——列表,元組,字典,集合
0.Python之禪 可以通過在python直譯器中輸入import this 檢視python應該注意的一些規範與原則,如下: 1.列表 元素用方括號括起,元素之間用逗號隔開,如[1,2,3,4] 三大特點: (1)異構性 列表裡想裝啥就裝啥,即:他可以包含不同種類、
每天學習一算法系列(4) (輸入一個整形陣列,數組裡有正數也有負數,陣列中連續的一個或多個整陣列成一個子陣列,每個子陣列都有一個和)
題目: 輸入一個整形陣列,數組裡有正數也有負數,陣列中連續的一個或多個整陣列成一個子陣列,每個子陣列都有一個和。 求所有子陣列的和的最大值。要求時間複雜度為O(n)。 例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4,
【代碼學習】PYHTON 元組
ext test .py logs 最大 最大值 不同 trace pytho Python的元組與列表類似,不同之處在於元組的元素不能修改。也可進行分片 和 連接操作. 元組使用小括號,列表使用方括號。 一、訪問元組 #coding=utf-8 Tuple = (‘na
python 列表,元組,字符串 切片 超出索引值不報錯
如果 -1 使用 png image pytho log 邊界 技術 通常情況下,當我們以索引值對一個字符串,或者元組,列表取值時,如果索引超出邊界,就會報錯,但是如果我們使用切片呢? 字符串: 列表: 元組: 可以看到,這三種情況都沒有報錯,而是返回對應
python入門學習-列表和元組(1)
索引 個人 .so .cn pytho 入門 main 範圍 mage 數據結構是通過某種方式(例如對元素進行編號)組織在一起的數據元素的集合。這些數據元素可以是數字或者字符,甚至可以是其他數據結構。 在python中,最基本的數據結構是序列(seque
python---基礎之模塊,列表,元組,字典
python3 ack div 第一個 ice lis value bsp 索引 1、 模塊 寫模塊的時候盡量不要和系統自帶的模塊的名字相同 調用模塊的時候,會先在當前目錄下查找是否有這個模塊,然後再會如python的環境變量中查找 a.模塊1:sys 代碼如下: 1
【python】-- 列表,元組
浮點數 dig else -i and 聯系 整形 __date__ -- 本節內容 字符串格式化輸出 數據運算 for循環 while循環 列表 元組 【字符串格式化輸出】 占位符 %s—string,%d—digital,%f —float
列表,元組,字典,集合 練習題
大寫 strip() 練習題 lex dex art per star 空格 練習題:(字符串name = ‘ aleX‘# 1) 移除 name 變量對應的值兩邊的空格,並輸出處理結果print(name.strip())# 2) 判斷 name 變量對應的值
遍歷列表,元組,字典,集合
src alt 分享 集合 -1 logs .com 列表 ima 遍歷列表,元組,字典,集合