【前端人python学习日记】基础语法【二】
数据容器
根据特点不同
- 是否允许元素重复
- 是否可以修改
- 是否有序
等,可以分为5类列表list、元组tuple、字符串str、集合set、字典dict
列表List
前端OS:中括号,能用索引下标取,是数组!!!
字面量
[元素1,元素2,元素3,元素4]
定义变量
变量名称=[元素1,元素2,元素3,元素4]
定义空列表
1 | 变量名称=[] |
数据类型
使用type输出类型,结果为<class 'list'>
下标索引
长度为n的列表
正向第一个元素下标是0,最后一个元素下标是n-1
反向第一个元素下标是-1,最后一个元素(也就是第一个元素),索引值是-n
下标索引取值
1 | myList=["hello",69,13.14,[36,"world"]] |
列表操作
查找元素
列表.index(目标元素)index会返回目标元素的下标
如果查找的元素不存在会报错
前端OS:js的index如果元素不存在会返回-1,但是python中-1也是索引,指的是最后一个元素
插入元素
列表.insert(插入位置,要插入的元素)例如myList.insert(1,"python")
在索引值为1的地方插入’python’,本来在索引值为1的元素会往后移动
如果插入的位置索引超出列表的长度会报错
追加元素
- 单个元素
列表.append(目标元素)将目标元素添加到列表尾部
- 多个元素
列表.extend(其他元素容器)将其他元素容器的内容取出,依次添加到列表尾部
[0,1,2].extend([3,4,5])会把[0,1,2]这个数组变成[0,1,2,3,4,5]
删除元素
del关键字
del 目标列表[索引]
pop方法
目标列表.pop(索引)
实际上是取出列表中的某个元素,这个方法的返回值是被取出的元素
清空列表
列表.clear()例如myList.clear()
修改元素
- 修改特定位置的元素(重新赋值)
列表[索引]=要修改的值例如myList[2]="python"
- 删除某个元素在列表中的第一个匹配项
列表.remove(元素)例如myList[2]="python"
统计元素个数
列表.count(目标元素)统计目标元素在列表中的个数
列表长度
len(列表)统计列表中的元素个数
元组Tuple
一个只读的list,可以储存多种类型的数据,修改其中的元素会报错,但列表作为元组的一个元素,列表内部的值是可以改变的
前端OS:一个不能操作的数组,尤其是作为元组元素的列表内部的值是可以改变的,简直像是const arr=[[1,2,3],4,5,“hello”]
字面量
(元素1,元素2,元素3,元素4)
定义变量
变量名称=(元素1,元素2,元素3,元素4)
定义空元组
1 | 变量名称=() |
数据类型
使用type输出类型,结果为<class 'tuple'>
下标索引
同list
元组操作
只支持**index,len(),count(),且使用方法同list**
字符串String
前端OS:这就是字符串,嗯
定义变量
str="hello world"
下标索引
可以使用下标索引取值,js中也可以,但我很少去用
字符串操作
序列
序列支持切片
列表,元组,字符串,均支持切片操作
语法:序列[开始位置:结束位置:步长]
可以参数不传,默认值开始位置为数据容器起点,结束位置为数据容器终点,步长默认为1
切片的起始位置默认为 0,即第一个元素的索引为 0。切片操作包括起点,但不包括终点
集合set
列表支持修改,支持重复元素,有序
字符串,元组 不支持修改,支持重复元素,有序
集合最大的特点,不支持重复元素,无序(无序就说明,不支持下标索引访问),允许修改
前端OS:出现了!集合!!!
定义集合
1 | test={"string","list","tuple","set","string","set"} |
定义时元素可以重复
输出时自动去重
集合操作
集合遍历
因为不支持下标索引所以不能使用while遍历
但可以使用for遍历
字典
不支持下标索引,无序,key不可重复
使用花括号{},储存键值对key:value
前端OS:我觉得是js里最好用的数据容器了
定义字典
1 | dict1={} |
不允许key重复,同名的key,后面的会覆盖前面的
字典取值
number=dict3["扁嘴伦"]
字典嵌套
字典可以作为字典某一个key的value,来实现字典的嵌套
字典可嵌套,取值可叠加
字典的键(key)可以是以下数据类型:
不可变数据类型:
- 字符串(string)
- 数字(integer、float、complex)
- 布尔值(boolean)
- 元组(tuple)
内置的哈希类型:
- 字节串(bytes)
字典的键必须是不可变的,因为字典使用哈希表来实现快速查找和访问。可变的数据类型(如列表)不能用作字典的键,因为它们的哈希值可以发生变化,从而破坏了字典的内部结构。
字典操作
数据容器对比
| 列表 | 元组 | 字符串 | 集合 | 字典 | |
|---|---|---|---|---|---|
| 元素数量 | 多个 | 多个 | 多个 | 多个 | 多个 |
| 元素类型 | 任意 | 任意 | 字符 | 任意 | 键值对 |
| 重复元素 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 下标索引 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 是否只读 | 否 | 只读 | 只读 | 否 | 否 |
| 使用场景 | 可修改可重复的数据 | 不可修改可重复的数据 | 一串字符串 | 不可重复的数据 | 以key检索value,有对应关系 |
数据容器通用操作
多数数据容器都支持下标索引取值,所以多数数据容器都支持while遍历
数据容器都支持for遍历
数据容器的通用方法len(),min(),max()
数据容器间可以互相转化,注意字典和字符串在转换成其他数据容器时会有变化,例如字典转换成列表就只剩key,而丢掉了value
**sorted(数据容器,[reverse=True])**第二个参数默认为False
将数据容器排序按**从小到大的顺序排序,如果第二个参数传True则从大到小排序,然后放进列表**里,你懂的,看上面↑
字母的大小取决于他的ascii值







