scala (5) 可变序列和不可变序列
/**
* 序列分为可变长和不可变长,序列其实就是list,底层是链表结构
* 特点:插入有序,可重复,增加和移除元素很快,查询慢
* 不可变长序列:List
* 可变长序列:ListBuffer
*/
/**
* 不可变长序列List ,长度不可变,角标元素也不可变
*/
val list = List(1,2,3,4,5)
/*list(0) = 11
println(list(0)) // Error:(17, 5) value update is not a member of List[Int] list(0) = 11*/ //++ 并没有改变原有的list,只是将连个list序列进行合并形成一个新的list
val list1 = list ++ List(6,7,8)
println(list1) // List(1, 2, 3, 4, 5, 6, 7, 8)
println(list.toBuffer) // ArrayBuffer(1, 2, 3, 4, 5)
/**
* 定义可变长序列
*/
val listb = ListBuffer(1,2,3,4,5)
// += 或 -= 后面只能跟一个单个的元素
listb += 11
listb -= 1
println(listb) // ListBuffer(2, 3, 4, 5, 11) // ++= 或--后面只能跟一个序列 List 或 ListBuffer
listb ++= List(23)
listb ++= ListBuffer(25)
listb.append(34,35)
println(listb) // ListBuffer(2, 3, 4, 5, 11, 23, 25,34,35) //移除指定角标的元素
listb.remove(0)
//从指定角标开始,移除指定个数的元素
listb.remove(1, 2)
/**
* 给list头部添加元素
*/
val list01 = List(4, 5, 6)
//注意,这里并不是将元素添加到list01里面,而是将list01和后面的元素(1,2,3)进行合并然后形成一个新的list
//newList,需要注意的是后面的(1,2,3)是作为一个整体和list0进行合并
var newlist = list01.:: (1,2,3) // List((1,2,3), 4, 5, 6)
newlist = list01.+:(1, 2, 3) // List((1,2,3), 4, 5, 6)
newlist = (1,2,3) ::list01 // List((1,2,3), 4, 5, 6)
newlist= (1,2,3) +:list01 // List((1,2,3), 4, 5, 6)
newlist = list01 ++ List(1,2,3) // List(1, 2, 3, 4, 5, 6) /**
* 给list尾部添加元素
*/
var list02 = List(4, 5, 6)
//这里也是将(7,8,9)作为整体同list02进行合并添加到尾部,形成一个新的list
var newList02 = list02.:+(7, 8, 9) //List(4, 5, 6,(7, 8, 9)) //将7,8,9进行拆分同list02进行合并插入到list02后面去形成一个新的list,原来的list并没有改变
newList02 = list02 ++ List(7, 8, 9) //List(4, 5, 6, 7, 8, 9)
/**
* 序列的常用操作方法
*/
val lt = List(1, 2, 3, 4, 5)
//求和
println(lt.sum) //15
//最大值
println(lt.max) //5
//最小值
println(lt.min) //1
//第一个元素
println(lt.head) //1
//最后一个元素
println(lt.last) //5
//反转序列,形成一个新的list,原来的list不会别改变
println(lt.reverse) //List(5, 4, 3, 2, 1)
//拼接
println(lt.mkString) //
println(lt.mkString(",")) //1,2,3,4,5
println(lt.mkString("[", ",", "]")) //[1,2,3,4,5]
/**
* 序列的转换操作
*/
val list03 = List(1,2,3,4,5,6,7,8)
list03.map(_ * 2).filter(x => x > 10).distinct.reverse.foreach(println(_))
scala (5) 可变序列和不可变序列的更多相关文章
- Python中的可变、不可变对象和赋值技巧序列解包
可变对象和不可变对象 在python中一切皆对象.在Python中不存在所谓的值传递调用,一切传递都是对象的引用,也可认为是传址. python中,对象分为可变(mutable)和不可变(immuta ...
- scala可变var与不可变val的理解
我们定义变量的时候分为var可变变量和val不可变变量. 我们使用容器的时候也分为可变容器和不可变容器. List和Tuple本身就是不可变的,set和map分为可变和不可变的,默认为不可变. 我们看 ...
- Python数据类型之“序列概述与基本序列类型(Basic Sequences)”
序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要以下几种类型: 3种基本序列类型(Basic Sequence Types):list. ...
- 理解python可变类型vs不可变类型,深拷贝vs浅拷贝
核心提示: 可变类型 Vs 不可变类型 可变类型(mutable):列表,字典 不可变类型(unmutable):数字,字符串,元组 这里的可变不可变,是指内存中的那块内容(value)是否可以被改变 ...
- python可变对象和不可变对象的解释
数据类型分为可变.不可变.可变对象表示可以原处修改该数据对象,不可变对象表示必须创建新对象来保存修改后的数据. 在基础数据类型中: 数值.字符串.元组.frozenset是不可变对象 列表.set.d ...
- 【转】Python数据类型之“序列概述与基本序列类型(Basic Sequences)”
[转]Python数据类型之“序列概述与基本序列类型(Basic Sequences)” 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主 ...
- python可变类型和不可变类型
原文地址:http://www.cnblogs.com/huamingao/p/5809936.html 可变类型 Vs 不可变类型 可变类型(mutable):列表,字典 不可变类型(unmutab ...
- python可变类型和不可变类型,深拷贝vs浅拷贝
转载:https://www.cnblogs.com/huamingao/p/5809936.html 核心提示: 可变类型 Vs 不可变类型 可变类型(mutable):列表,字典 不可变类型(un ...
- 『无为则无心』Python序列 — 24、Python序列的推导式
目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...
随机推荐
- MySQL 数据库 -- 操作
初识sql语句 有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写. SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开 ...
- Mac OS 10.8 配置SVN服务器
Mac 10.8开始,不再默认安装svn,需要自行安装 如果您安装了XCode,会随同安装svn 更省事的办法: 1.安装homebrew,看看官网 http://brew.sh/index_zh-c ...
- 有用的JS函数
1. QueryString function queryString(key) { var re = new RegExp("[?&]" + key + "=( ...
- January 05 2017 Week 1st Thursday
The true nobility is in being superior to your previous self. 真正的高贵在于超越过去的自己. I will be satisfied if ...
- 转自csdn:计算机启动过程
启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信 息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中 包含了CPU的相关信息.设备启动顺序信息 ...
- iOS模拟器命令xcrun simctl系列(自动化测试)
1. 列出安装的可用的模拟器: xcrun instruments -s [如:iPhone 5s (9.0) [00AB3BB6-C5DC-45C7-804F-6B88F57C2AFF] (Simu ...
- 自学PHP有哪些书籍和教程值得推荐?
知乎上看到一题主询问:"自学PHP有哪些书籍和教程值得推荐?",互联网深度屌丝秦风给出了不错的答案,希望能够帮助自学PHP的朋友们. 以下仅供参考: 尤其不认可W3school之类 ...
- charles license key
Download: http://www.charlesproxy.com/ (Official Web-site) Registered name: anthony ortolani License ...
- SQL的别名和SQL的执行顺序和SQL优化
SQL的别名 1.不可以在where子句中使用列名的别名,即select name t from emp where t>2999;是不允许的 2.使用别名的好处: 提高SQL的易读性 提高SQ ...
- gluoncv voc_detection
https://github.com/zhreshold/gluon-cv/commit/73b3986aaa2e0d0e6f3f428c12072e3a9d29905e gluoncv可能版本还没更 ...