文章目录
- 序列
- 什么是序列
- 序列有哪些种类
- 序列的通用操作
- 1.索引
- 2.切片
- 3.加法
- 4.乘法
- 5.成员运算符
- 列表
- 1.创建
- 普通方法
- 列表推导式
- 2.增
- 3.删
- 4.改
- 5.查
- 6.排序
- 二维列表
- 与一维列表的异同点
- 元组
- 1.创建
- 2.改
- 3.删
- 4.查
- 字典
- 创建
- 增
- 删
- 改
- 查
- 集合
- 创建
- 增
- 删
- 改
- 查
- 集合的交差并集的运算
- 字符串
- 创建
- 索引
- 切片
- split()
- find()
- count()
- join()
- strip()
- startswith()
- endswith()
- 大小写转换
- 格式化输出
序列
什么是序列
就像是C中的array一样,在内存空间储存形式为占用一连串的地址
序列有哪些种类
列表、元组、字典、集合、字符串
序列的通用操作
1.索引
索引:0开始,n-1结束
或者:-(n-1)开始,-1结束
2.切片
seq[start : end : step] #包括开始位置但不包括结束位置,step指步长
seq[0:]
seq[1:2]
seq[-(n-1):-1]
3.加法
seq1+seq2 只有相同的序列类型才可以相加,即列表与列表相加,元组与元组相加
相加的结果则是序列的拼接
4.乘法
seq * int 相乘的结果是序列重复拼接int次
5.成员运算符
object in seq 判断object 是否在seq中,返回布尔值
object not in seq 判断object是否不在seq中,返回布尔值
列表
1.创建
普通方法
直接赋值:list = [“1”,“2”]
或者空列表:list = []
list函数 : list(“123456”)
列表推导式
[expression for var in list]
[expression for var in range()]
[expression for var in lsit if condition]
2.增
上述的加法可以实现增加元素或者列表(该方法运行速度比较慢)
或者列表对象的方法list.append(object) #该方法在列表最后添加元素
或者列表对象的方法list.insert(object) #在列表指定位置添加元素
拼接列表时还可以list.extend(list2) #将list2的所有元素添加到list中
3.删
删除列表:del listname #该方式只是将列表名与内存空间截断了而已,实际放在内存中的数据没有被释放
根据元素的索引删除元素:del list[index]
根据元素的值删除元素:list.remove(object)
4.改
改变列表或者元素:都是选择然后重新赋值,是先选择确定的列表或者元素然后赋值
5.查
索引法
切片
列表对象的方法:list.count(object) #统计元素出现的次数,返回0则表示没有该元素
获取元素的index:list.index(object) #此时返回的index是第一个遇到的元素的index,费多个相同object
遍历
for item in tuple:
print(item)
for index,item in enumerate(tuple):
print(index,item)
6.排序
sort #列表对象的方法,改方法会改变源列表
sorted #python内置函数,返回的是一个copy,源列表不会改变
二维列表
类似于C中的二维array
类似于pandas中的2维ndarray
[[ … ],
[ … ],
[ … ]]
上面的列表形式就是个二维列表,可以想象为3行多列的数据框
与一维列表的异同点
索引有些差别,二维列表的索引list[1]:表示索引第二行
list[1][1] :表示索引第二行,第二列
元组
小括号括起来的序列,其中元素是不可以改变的
1.创建
直接赋值,注意只有一个元素时,元素后还要加一个逗号
函数tuple()
空元组:括号
推导式:类似于列表推导式
2.改
只有整体重新赋值才可以改变元组
注意只要是序列都可以有加法运算
3.删
del方法删除整个元组
4.查
索引
切片
遍历
for item in tuple:
print(item)
for index,item in enumerate(tuple):
print(index,item)
字典
无序键值对,键和值一一对应,键是唯一的不可变的,值可以是任意类型的数据
创建
直接赋值:dictionary = {“key1”:“value1”,“key2”:“value2”}
空字典:dictionary = {}
序列之间的映射关系:dictionary = dict(zip(list1,list2))
序列之间的映射关系2:dictionary = dict(tuple:list) #注意字典的键是唯一不变的
数值的对应关系:dictionary = dict(key1=value1,key2=value2,key3=value3)
创建只有键没有值的字典:dictionary = dict.fromkeys(list) #list中的元素作为字典的键,value默认为None
字典推导式:{i:random.randint(10,100) for i in range(1,5)} #仅是个范例
增
直接赋值:dictionary[key] = value #注意如果源字典中包含了key,则会变成重新赋值
不支持索引切片和加法乘法
删
del dictionary[key]
dictionary.clear() #清空所有value
改
重新赋值
查
无法切片,无法索引
dictionary[key]
dictionary.get(key)
遍历字典
dictionary.items() #返回的是键值对的元组列表,即键值对组成元组,所有的键值对又组成列表
for items in dictionary.items():
print(items)
for key,value in dictionary.items():
print(key,value)
集合
大括号括起来的序列,元素之间没有重复,而且无序
创建
直接赋值:set = {1,2,3}
函数:set()
增
setname.add(object)
不支持加法
删
setname.remove(object) #删除一个指定元素
setname.clear() #清空集合
改
查
成员运算符判定
集合的交差并集的运算
交集 set1 & set2
并集 set1 | set2
差集 set1 - set2
对称差集 set1^set2 #集合1与集合2中所有不属于set1 & set2的元素的集合
字符串
基本上所有的程序或者脚本从运行开始到结束都是在处理字符串
创建
单引号或者双引号或者三引号界定
索引
第一个字母的索引为0
切片
string[start:[end] [ : step]]
split()
string.split(sep,maxsplit) #sep指分隔符,不指定则默认为空格、tab、换行符等,而且多个重复出现的默认的分隔符算做一个
#指定sep后,连续出现的分隔符每个都起作用,返回空值
#结果返回一个分隔符不在内列表,分隔符分割的每个元素都是列表的元素,包括空值string.rsplit() #从字符串的右边开始分割
find()
string.find(sub[,start[,end]]) #在staring中找sub,返回首次出现改字符串的索引,未找到则返回-1
string.rfind(sub[,start[,end]]) #从右开始在staring中sub,返回首次出现改字符串的索引,未找到则返回-1
count()
string.count(sub[,start[,end]]) #在string中计算sub出现的次数,未找到则返回0
join()
字符串拼接我们可以利用加号“+”实现
string.join(iterable) #其中string指定连接符,iterable指定可迭代的对象
strip()
string.strip([chars]) #在中括号中指定要去除的字符合集,字符之间是或者的关系
#默认去除换行符、回车、tab、空格
string.lstrip([chars]) #去掉左侧的空格或者特殊字符
string.rstrip([chars]) #去掉右侧的空格或者特殊字符
startswith()
string.startswith(prefix[,strat[,end]])
endswith()
string.endswith(suffix[,satrt[,end]])
大小写转换
str.lower()
str.upper()
格式化输出
模板.format(string)
要转换的string可以是多个,使用逗号进行分割模板可以使用大括号{}以及冒号:指定占位符
{[index] [ : [[fill]align] [sign] [#] [width] [.precision] [type] ]}
index : 指定要转换的string在参数列表中的索引位置,索引从0开始
fill : 指定空白处填充的字符
align:用于指定对齐方式,> 左对齐 < 右对齐 ^ 内容居中,align要与width一起使用
sign:正负号
#:
width:用于指定所占宽度
.precision:指定保留的小数位数
type:用于指定类型