第五章组合数据类型
5.1认识组合数据类型
1.序列类型
有序列关系
支持双向索引
------------->
0 1 2 #正向索引
m=['asd','fgh','jkl']
-3 -2 -1 # 反向索引
<--------------
2.集合类型
具有数学集合的特性
确定性、互异性、无序性
3.映射类型
以键值对的形式储存元素
原则
- 每个键只能对应一个值,不允许同一个键在字典中重复出现
- 字典中的键是不可变类型
不可变类型:整型、浮点型、字符串、元组
可变类型:列表、字典、集合
有顺序关系:字符串、列表、元组
无顺序关系:集合、字典
5.2列表
无长度限制,最灵活,可包含任意元素
5.2.1创建列表
1.使用中括号“[ ]”创建列表
各元素以 ,相隔
list_one=[]
2.使用list()函数创建
list_one=list('python')#()内的必须是可迭代类型数据
5.2.2访问列表元素
1.索引访问
访问list中索引为n的元素
list[n]
2.切片访问
截取部分元素,获取一个新列表
list[m:n:step]
按步长step获取列表list中索引[m,n)对应的元素
step默认为1,若m省略,切片从列表首部开始,若n省略,切片到列表末尾结束
3.遍历访问
可用 for…in…逐个访问列表元素
例えば
list_1=[1,2,3,4,5]
for i in list_1
print(i)
not in判断是否存在
5.2.3添加列表元素
1.append()方法
在列表末尾添加新元素
例えば
list_1 = [1,2,3,4]
list_1.append(5)
print(list_1)
2.extend()方法
在列表末尾添加另一列表的所有元素
例えば
list_str = ['a','b','c']
list_num = [1,2,3]
list_str.extend(list_num)
print(list_str)
3.insert()方法
按索引号将新元素插入列表指定位置
例えば
names =['baby','Lucy','Alise']
names.insert(2,'peter')
print(names)
5.2.4元素排序
1.sort()方法
sort(key=None,reverse = False)
按升序排列
sort(key=None,reverse = Ture)
按降序排列
reverse 默认为False, False为升序, Ture为降序
key指定排序规则,默认None
例えば
list_num = [1,2,3]
list_num.sort()#升序
list_num.sort(reverse=Ture)#降序
2.sorted()
升序排列,不会改变原列表,生成新列表
例えば
list_num = [1,2,3]
list1 = list_num.sorted()
print(list1)
3.revrerse()
逆置列表
例えば
list_str = ['a','b','c']
list_str.reverse()
print(list_str)
5.2.5删除列表元素
1.del 语句
删除指定元素
例えば
names = ['baby','Lucy','Alise']
del names[0]
print(names)
删除列表
例えば
del names
2.remove()方法
移除某个元素,有多个时,删除第一个
例えば
names = ['baby','Lucy','Alise']
names.remove('baby')
print(names)
3.pop()方法
移除列表中的某个元素,未指定元素索引号,默认移除列表最后一个元素
例えば
list_str = ['a','b','c']
print(list_str.pop(1))
4.clear()方法
清空列表
例えば
list_str = ['a','b','c']
list_str.clear()
print(list_str)
5.2.6列表推导式
列表推导式可以使用简单的方式,对列表或其他可迭代对象元素,进行遍历,过滤,再次计算,从而快速生成满足特定条件的新列表
可迭代对象:支持for…in…语句迭代获取数据的对象
isinstance()函数判断是否为可迭代对象
from collections.abc import Iterable
ls = [3,4,5]
print(isinstance(ls,Iterable))
补充
index()方法
用于从列表中找出某个值第一个匹配项的索引位置。
该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。
格式:
list.index(x[, start[, end]])
- x-- 查找的对象。
- start-- 可选,查找的起始位置。
- end-- 可选,查找的结束位置
#!/usr/bin/python
# -*- coding: UTF-8 -*-
aList = [123, 'xyz', 'runoob', 'abc']
print "xyz 索引位置: ", aList.index( 'xyz' )
print "runoob 索引位置 : ", aList.index( 'runoob', 1, 3 )
#结果
xyz 索引位置: 1
runoob 索引位置 : 2
5.3元组
有顺序,可索引、切片、不可变
元组不可变,但嵌入列表元素,可通过改变列表,进而更改元组
1.创建元组
圆括号“()”、由逗号分隔元素
t1 = ()
t2 = (3,)
只有一个元素,该元素后的“,”不能省略
teple()
t1 = teple()
5.5集合
1.创建集合
大括号“{}”,逗号“,”分隔
空{}不能创建空集合,{}为空字典
s1={1,2}
set()
s = set()
2.集合常见操作
add(x)
向集合中添加元素x,x已存在时不做处理
remove(x)
删除集合中的元素x,若x不存在则抛出KeyError异常
discard(x)
删除集合中的元素x,若x不存在时不做处理
pop()
随机返回集合中的一个元素,同时删除该元素;若集合为空,则抛出KeyError异常
clear()
清空集合
copy()
复制集合,返回值为集合
isdisjoint(T)
判断集合与集合T是否没有相同的元素,没有返回True,有则返回False
3.集合推导式
与列表推导式类似,区别在于集合推导式外侧为大括号“{}”
5.6字典
字典可嵌套字典类型数据,具有映射关系
补充
键可以是字符串、数字类型等不可变类型,但是不能是列表、字典等可变类型
5.6.1创建字典
字典的表现形式为一组包含在大括号“{}"中的键值对,每个键值对为一个字典元素,每个元素通过逗号“,”分隔,每对键值通过“:”分隔,语法格式如下:
{键1:值1,键2:值2,键3:值3,.......键N:值N}
字典的值可以是任意类型,但键不能是列表或字典类型
字典元素无序,键/值必须唯一
“{}"创建字典
例えば
d1 = {}
d2 = {'a':1,'b':2}
dict()
例えば
d3 = dict()
d4 = dict({'a':1,'b':2})
5.6.2字典的访问
利用键访问值
格式
字典变量[键]
例えば
print(d4['a'])
get()方法
根据键从字典中获取对应的值,若指定的键不存在,则返回默认值(default)
格式
d.get(key[,default])
keys()方法
获取所有键
例えば
dic = {'name':'jack','age':23,'height':185}
print(dic.keys())
values()方法
获取所有值
例えば
dic = {'name':'jack','age':23,'height':185}
print(dic.values())
items()方法
获取所有元素
例えば
dic = {'name':'jack','age':23,'height':185}
print(dic.items())
keys(),values(),items()返回值都是可迭代对象
补充
#操作函数
leng(d)#求元素个数
min(d)#求键的最小值
max(d)#求键的最大值
#操作方法
d.pop(key,default)#删除键值对,返回值
d.popitem#随机取出一个键值对,以元组(key,value)形式返回
d.clear()#删除所有键值对
for 循环遍历
for i in dict3:
#此时,i指向的键
#通过dict3[i]或dict3.get(i)获取对应值
5.6.3字典元素的添加和修改
1.字典元素添加
为指定的键赋值
字典变量[键] = 值
例えば
add_dict = {'name':'jack','age':23,'height':185}
add_dict['sco'] = 98
print(add_dict)
update()方法
例えば
add_dict = {'name':'jack','age':23,'height':185}
add_dict.update(sco=98)
print(add_dict)
2.字典元素的修改
为指定的键赋值
例えば
add_dict = {'name':'jack','age':23,'height':185,'sco':98}
add_dict['sco'] = 100
print(add_dict)
update()方法
例えば
add_dict = {'name':'jack','age':23,'height':185,'sco':98}
add_dict.update(sco=100)
print(add_dict)
5.6.4字典元素的删除
1.pop()方法
删除指定元素,删除成功返回目标元素的值
例えば
add_dict = {'name':'jack','age':23,'height':185,'sco':98}
print(add_dict.pop())
2.popitem()方法
随机删除字典中的元素,删除成功返回目标元素的值
例えば
add_dict = {'name':'jack','age':23,'height':185,'sco':98}
print(add_dict.popitem)
3.clear()方法
清空字典中的元素
例えば
add_dict = {'name':'jack','age':23,'height':185,'sco':98}
print(add_dict.clear())
5.6.5字典推导式
字典推导式的格式、用法与列表推导式类似,区别在于字典推导式外侧为大括号“{}”,且内部需包含键和值2个部分
格式
{new_key:new_value for key,value in dict.items}
5.8组合数据类型应用运算符
1.“+”运算符
数据拼接
2.“*”运算符
原数据整数倍的拼接
3.“in” “not in”运算符
判断某个元素是否属于某个变量