【ES6系列】Iterator

每一次调用 next() 都会返回数据结构当前成员的信息。具体的说,返回一个包含 valuedone 两个属性的对象,其中,value 属性是当前成员的值,done 属性是一个布尔值,表示遍历是否结束。

Set 为例:

let set = new Set([1,2,3,4,5])

let iterator = set.values()

console.log(iterator.next())//{value: 1, done: false}

记住,通过遍历器对象调用 next() 拿到的是一个包含两个描述属性的对象,而不是具体的某一个值!!

如果期望直接获取到具体的值,那么就需要通过上面提到的 for...of 来实现了。示例:

let set = new Set([1,2,3,4,5])

let iterator = set.values()

for(let item of iterator){

console.log(item)//1 2 3 4 5

}

当使用 for...of 循环遍历某种数据结构时,该循环会自动去寻找 Iterator 接口。一种数据结构只要部署了 Iterator 接口,那么就称这种数据结构是可遍历的(iterable)。

ES6 规定,默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性,也就是说,一种数据结构只要有 Symbol.iterator 属性,那么就可以被认为是可遍历的。Symbol.iterator 属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。ES6 中,有些数据结构原生就具备这个属性,即不用任何处理就可以被 for...of 循环遍历,比如:数组。

let arr = [1,2,3]

let iterator = arrSymbol.iterator//获取数组的遍历器对象

console.log(iterator.next())//{value: 1, done: false}

当然,也可以直接使用 for...of 循环:

let arr = [1,2,3]

for(let item of arrSymbol.iterator){

console.log(item)//1 2 3

}

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
😕/bbs.youkuaiyun.com/topics/618191877)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

<think>好的,我现在需要帮助用户了解Python中的列表、元组、集合字典。首先,我应该回忆这些数据结构的基本概念和区别。用户可能想知道它们各自的定义、特点以及何时使用它们。根据提供的引用内容,我需要确保信息准确,并引用正确的来源。 首先,列表(List)应该是有序、可变的,支持重复元素。用户可能对如何创建和操作列表感兴趣,比如添加、删除元素。引用里提到列表用方括号,可以动态调整大小,所以应该强调这些点。 然后是元组(Tuple),它和列表类似但不可变。需要说明元组用圆括号,适用于不希望数据被修改的场景,比如作为字典的键。引用2和3都提到了元组的不可变性,需要强调这一点。 接下来是集合(Set),无序且元素唯一。用户可能不太清楚集合的应用场景,比如去重或集合运算。引用里提到集合用花括号,所以需要说明如何创建和使用集合的方法,如并集、交集等。 最后是字典(Dict),键值对结构,无序且键必须唯一。用户可能想知道如何访问、添加或修改键值对。引用3详细说明了字典的创建和操作函数,应该涵盖这些内容,比如使用get方法或直接通过键访问。 在比较部分,需要将四者的特性列出来,比如可变性、有序性、重复元素和表示符号。这样用户能一目了然地看到区别。应用场景部分应该结合各自的特点举例,比如列表用于数据收集,元组用于固定配置,集合用于去重,字典用于键值存储。 用户可能还会关心如何选择合适的数据结构,这部分需要结合引用1中的建议,根据需求选择高效的结构。例如,频繁修改用列表,需要唯一性用集合,快速查找用字典。 需要确保回答结构清晰,分点说明每个数据结构的特点、操作方法和示例代码。同时,检查LaTeX格式是否符合要求,行内公式用$...$,独立公式用$$...$$,但当前内容可能涉及较少数学公式,主要关注代码块和结构。 最后生成相关问题时要围绕用户可能进一步想了解的内容,比如性能对比、嵌套使用、转换方法等。确保问题覆盖用户可能深入的方向,帮助他们继续学习。 现在需要整合这些思考,按照用户的要求分章节回答,使用中文,语法正确,引用正确来源,并在末尾添加相关问题。</think>### Python列表、元组、集合字典详解 #### 一、列表(List) **特点** 1. **有序可变**:元素按插入顺序排列,支持增删改操作[^2]。 2. **允许重复**:同一元素可多次出现。 3. **灵活存储**:可包含不同类型的数据(如混合整数、字符串等)。 **使用方法** - **创建**:用方括号 `[]` 或 `list()` 函数。 ```python my_list = [1, "a", True] ``` - **操作** - 添加元素:`append()`、`insert()`、`extend()` - 删除元素:`pop()`、`remove()`、`del` - 切片访问:`my_list[0:2]` - 排序:`sort()` **示例** ```python fruits = ["apple", "banana"] fruits.append("orange") # ["apple", "banana", "orange"] fruits[1] = "grape" # ["apple", "grape", "orange"] ``` --- #### 二、元组(Tuple) **特点** 1. **有序不可变**:创建后元素不可修改[^2][^3]。 2. **轻量安全**:内存占用小,适合存储固定配置或常量。 3. **可哈希**:可作为字典的键。 **使用方法** - **创建**:用圆括号 `()` 或 `tuple()` 函数。 ```python my_tuple = (1, "a", True) ``` - **操作** - 索引访问:`my_tuple[0]` - 不可修改元素,但可嵌套可变对象(如列表)。 **示例** ```python config = ("localhost", 8080) # config[0] = "127.0.0.1" # 会报错 ``` --- #### 三、集合(Set) **特点** 1. **无序唯一**:元素不重复且无顺序。 2. **高效查询**:基于哈希表实现,`in` 操作时间复杂度为 $O(1)$。 3. **集合运算**:支持并集(`|`)、交集(`&`)等。 **使用方法** - **创建**:用花括号 `{}` 或 `set()` 函数(空集合必须用 `set()`)。 ```python my_set = {1, 2, 3} ``` - **操作** - 添加元素:`add()` - 删除元素:`remove()`、`discard()` - 去重:`set([1,1,2])` → `{1,2}` **示例** ```python a = {1, 2} b = {2, 3} print(a & b) # {2} ``` --- #### 四、字典(Dict) **特点** 1. **键值对存储**:键唯一且不可变(如字符串、数字、元组)[^3]。 2. **无序可变**:Python 3.7+ 中插入顺序保留。 3. **快速查找**:通过键直接访问值,时间复杂度 $O(1)$。 **使用方法** - **创建**:用花括号 `{}` 或 `dict()` 函数。 ```python my_dict = {"name": "Alice", "age": 30} ``` - **操作** - 添加/修改:`my_dict["gender"] = "female"` - 删除键值对:`del my_dict["age"]` - 获取键列表:`keys()` - 安全访问:`get("key", default_value)` **示例** ```python scores = {"math": 90, "english": 85} scores["physics"] = 95 # 添加新键值对 print(scores.get("chemistry", 0)) # 输出0(默认值) ``` --- #### 五、四者对比 | 特性 | 列表 | 元组 | 集合 | 字典 | |--------------|------------|------------|------------|------------| | **可变性** | 可变 | 不可变 | 可变 | 可变 | | **有序性** | 有序 | 有序 | 无序 | 无序(Python 3.7+ 有序) | | **重复元素** | 允许 | 允许 | 不允许 | 键不允许重复 | | **表示符号** | `[]` | `()` | `{}` | `{key: value}` | --- #### 六、应用场景 1. **列表**:数据收集(如日志记录)、需要频繁修改的场景。 2. **元组**:配置参数、函数返回多个值、字典键。 3. **集合**:去重、成员快速判断、集合运算。 4. **字典**:键值映射(如数据库记录)、JSON数据解析。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值