Dart基础:可迭代的集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart基础:可迭代的集合相关的知识,希望对你有一定的参考价值。
参考技术A Dart中常用的集合类型: List 、 Set 、 Map 。
其中 List 、 Set 实现了 Iterable 类的接口。
Map 内部使用了不同的数据结构。但使用 Map 的 entry 或 values 属性,也可以将 Map 的元素读取为 Iterable 对象。
Iterable 是一个可被有序访问的元素的集合。Dart中 Iterable 是抽象类,是不能被实例化的。但是可以通过 List 、 Set 创建 Iterable 。
Iterable 与 List 的不同之处在于, Iterable 没有 [] 操作符,因此不能使用如下方式读取特定索引的元素:
但是我们可以用另一种方式来获取:
实现了 Iterable 的类,都是可以使用 for-in 循环进行遍历的。 for-in 通过 Iterator (迭代器),遍历 Iterable 对象。
1. first 和 last
2. firstWhere :
从 Iterable 的对象中,获取满足条件的第一个元素。
3. singleWhere :
从 Iterable 的对象中,获取满足条件的一个元素,但它只期望只有一个元素满足条件。如果超过一个或没有元素满足条件,则会抛 StateError 。用法与 firstWhere 一致。
4.条件检查
使用 Iterable ,有时需要校验集合中的元素是否满足一些条件,可以不使用 for-in 。
Dart提供了 every 方法:
来判断是否所有的元素都满足某个条件
Dart提供了 any 方法:
来判断是否至少有一个元素满足某个条件。
5. where :
返回满足条件的所有元素集合。
6. takeWhile 与 skipWhile :
takeWhile 会从 Iterable 对象中获取所有满足条件的元素,直到不满足时,会跳出迭代。
skipWhile 会从 Iterable 对象中跳过所有满足条件的元素,直到不满足时,会获取。
7. map :
Iterable 对象可以使用 map 方法,对集合中的每个元素进行操作或替换,最终返回一个新的集合。
参考资料:
Dart-Language-Tour
Python基础知识—集合
集合 set
定义
由一系列不重复的不可变类型变量组成的可变散列容器。
相当于只有键没有值的字典(键则是集合的数据)。
基础操作
创建空集合:
集合名 = set()
集合名 = set(可迭代对象)
创建具有默认值集合:
集合名 = {1, 2, 3}
集合名 = set(可迭代对象)
添加元素:集合名.add(元素)
删除元素:集合名.discard(元素)
运算
1.交集&:返回共同元素。
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 & s2 # {2, 3}
2.并集 |:返回不重复元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 | s2 # {1, 2, 3, 4}
3.补集-:返回只属于其中之一的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 - s2 # {1} 属于s1但不属于s2
s2 - s1 # {4} 属于s2但不属于s1
补集^:返回不同的的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 ^ s2 # {1, 4} 等同于(s1-s2 | s2-s1)
子集<:判断一个集合的所有元素是否完全在另一个集合中
超集>:判断一个集合是否具有另一个集合的所有元素
s1 = {1, 2, 3}
s2 = {2, 3}
s2 < s1 # True
s1 > s2 # True
相同或不同== !=:判断集合中的所有元素是否和另一个集合相同。
s1 = {1, 2, 3}
s2 = {3, 2, 1}
s1 == s2 # True
s1 != s2 # False
子集或相同,超集或相同 <= >=
集合推导式
定义:使用简易方法,将可迭代对象转换为集合。
语法:
{表达式 for 变量 in 可迭代对象}
{表达式 for 变量 in 可迭代对象 if 条件}
固定集合 frozenset
定义:不可变的集合。
作用:固定集合可以作为字典的键,还可以作为集合的值。
基础操作:创建固定集合:frozenset(可迭代对象)
运算:等同于set
以上是关于Dart基础:可迭代的集合的主要内容,如果未能解决你的问题,请参考以下文章