4-高级变量序列说明
1 序列区别
区别 | 列表:list | 元组:tuple | 字典:dictionary | 字符串:char |
---|---|---|---|---|
修改 | 可以修改 | 不可修改 | 可以修改 | 可以修改 |
索引 | 有索引 | 有索引 | 无索引 | 有索引 |
类型 | 相同类型 | 不同类型 | 任何类型 | 文本字符 |
场景 | 普遍使用 | 特定场景 | 描述事物 | 多种方法 |
切片 | 可以切片 | 可以切片 | 不可切片 | 可以切片 |
2 序列格式
名称 | 基本格式 | 遍历格式 |
---|---|---|
列表list | 列表名[“数据1”,“数据2”] | for 变量名 in 列表名 : print(变量名) |
元组stup | 元组名(“数据”,23,0.45) | for 变量名 in 元组名: print(变量名) |
字典dict | 字典名{ “键”,“值” : “键2”,“值2”}: | for k in 字典名: print(k,字典名[k]) |
字符串char | 字符串名="hello python" | for char in 字符串名: print(char) |
3 序列说明
1:序列统称:是一种数据结构,其中的元素带编号,列表,字符串,元组,字典都属于序列
2:序列可变性:列表和字典是可变的,元组和字符串是不可变的
3:序列常用:是列表和元组,另一种重要的是字符串
4:序列格式:所有元素都放在方括号内,并用逗号隔开
5:序列操作:适用于所有序列的操作:索引,切片,相加,相乘,成员资格
6:序列访问:要访问序列的一部分,可以使用切片操作,提供两个索引
7:序列修改:要修改列表,可给其元素赋值,也可使用赋值语句给切片赋值
8:序列成员资格:要确定特定的值是否包含在序列中
9:序列方法:一些内置类型,提供了很多方法,有点像函数,只是与特定的值相关联
10:序列属性:所有序列都有索引和元素,字典的属性叫键和值
11:字符串特殊说明
*所有标准的序列操作(索引,切片,乘法,成员资格,长度,最小值最大值)都适用于字符串
*但是字符串是不可变的,因此所有的元素赋值和切片赋值都是非法的
12:字典说明:
*字典是让你能够轻松的找到特定的单词(键),已获悉其定义(值)
*字典由键和值组成,键值对称为项(item)
13:序列计算_说明
*通过加法拼接序列,必须相同类型
*通过乘法重复序列n次
14:成员资格_说明
*检查特定的值是否包含在序列中,使用运算符`in`
*格式:`元素值 in 序列`
15:序列_特定字符说明
单引号和双引号混合使用, \可以对引号进行转义, \n是换行符
4 列表和字典说明
1:成员资格区别说明
k in d #d是字典,查找的是键而不是值
v in l #l是列表,查找的是值而不是索引
k={"a":1,"b":2,"c":3,"d":4} #实例
print 4 in d #列表查询
print d ["b"] #字典查询
---------------------------------------------------------------
2:格式套用说明
*列表中有字典 [{1:1},{2:2},{3:3},]
*字典中有列表 {"a":[80,90,60],"b":[70,45,30]}
---------------------------------------------------------------
3:赋值说明
可以同时给序列中的多个元素替换赋值
可以在不替换原有元素情况下插入新元素
--字典赋值
k={"a":1,"b":2,"c":3,"d":4}
k["b"]=12 #单独赋值
k["f"]=123 #多添加一组值
--列表赋值:字符串转列表,进行切片赋值 疑问:字符串能不能直接切片???
ken=list['123'] 结果:['1','2','3'] #给ken赋值,123从字符串转换成列表
ken[2:]=list('45') 结果:['1','2','4','5'] #对存储列表的变量ken进行切片,并且赋值
ken[1:1]=[2,3] #说明:切片确定在固定位置,往里插入
---------------------------------------------------------------
4:转换说明
list('hello') #将字符换转换成列表
''.join(需要转换的列表) #列表转换成字符串
d.items() #将字典转换成列表
d.items()[:3] #是列表了就可以切片了
---------------------------------------------------------------
5:原因说明:字典不能切片,所以要抓换成列表,然后进行切片操作
之前还说字符串也不能切片,同理.
5 索引说明:给元素取单一值
1:索引和元素模型:
元素 ='1.2.3.4.5.6.7.8.9.10'
从左到右索引 ='0.1.2.3.4.5.6.7.8.9'
从右到左索引 ='-10.-9.-8.-7.-6.-5.-4.-3.-2.-1'
2:索引说明:
索引:序列中的所有元素的编号,从0开始递增
使用索引获取元素,这种索引方式适用于所有序列
3:索引功能:
k='hello' #创建字符串k
序列名[索引] k[0] 结果:'h' #正索引取值
序列名[-索引] k[-1] 结果:'o' #反索引取值
'hello'[1] 结果:'e' #字面量取值,直接进行索引
ken=input('year: ')[3] 输入 2019 结果:9 #函数调用返回取值
6 切片说明:给元素取一块值
1:索引和元素模型:
元素 ='1.2.3.4.5.6.7.8.9.10'
从左到右索引 ='0.1.2.3.4.5.6.7.8.9'
从右到左索引 ='-10.-9.-8.-7.-6.-5.-4.-3.-2.-1'
2:切片说明:
*使用切片:提取特定范围的值
*序列名[索引1 : 索引2] #索引1:是包含对应元素 索引2:是不包含对应元素
k[3:6] 结果:4,5,6
*简写格式:因为索引2的设定,找不到索引,因此需要简写,提取元素边缘值
k[-3:] #取右边缘值
k[:3] #取左边缘值
k[:] #取两侧边缘值
7 步长说明:给元素分隔取块值
1:步长格式说明:序列名[索引1 : 索引2 : 步长值]
2:步长值说明:默认步长为1,不能为0,可以为负数,从右向左提取
k[0:10:2] 结果:1,3,5,7,9
3:简写格式
k[::2] 结果:1,3,5,7,9