列表
基本概念
· 列表是有序的元素集合,所有元素放在一堆中括号中,用逗号隔开,没有长度限制;
· 列表索引值以0位开始值,-1为从末尾的开始位置;
· 列表可以使用+操作符进行拼接,使用*表示重复;
· 当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙
列表元素可以通过索引访问单个元素
a=[4,2,3,6,6,9,5,8,1]
a[3] = 6
a[0] =4
列表
· 列表可以完成大多数集合类的数据结构实现;
· 列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)
列表元素修改
· 列表大小没有限制,可以随时修改;
· 列表元素可以随时修改
列表基本操作
列表相关方法
利用索引访问列表
列表常用方法
append() 在列表后面追加元素
insert( ) 在列表指定位置插入元素
extend( ) 在列表后面追加列表
pop( ) 不带元素,默认返回列表最后一个元素并删除,若有指定元素,返回指定元素并删除
remove( ) 删除第一个指定元素,没有返回值
sort( ) 按大小进行排序,或按字符串顺序进行排序
reverse( ) 翻转,首尾交替
count( ) 计算元素出现次数
index( ) 返回某元素在列表中第一次出现的索引值
列表推导式
元组
基本概念
· 元组(tuple)是包含多个元素的类型,元素之间用逗号分割,如t1 = (123,456,"hello");
· 可以通过把若干元素放在一对圆括号中创建元组,如果只有一个元素的话则需要多加一个逗号,如(3,);
· 也可以使用tuple( )函数把列表,字典,集合,字符串以及range对象,map对象,zip对象或其他类似对象转换为元组;
· 元组可以是空的,t2 = ( );
· 一个元组也可以作为另一个元组的元素(嵌套)此时,作为元素的元组需要增加括号,从而避免歧义;
· 元组中各元素存在先后关系,可以通过索引访问元组中元素;
· 元组定义后不能更改,也不能删除;
· 与字符串类型类似,可以通过索引来访问元组中的部分元素;
· 与字符串一样,元组之间可以用+号和*号进行运算
元组与列表的区别
· 元组是不可变的,不能直接修改元组中的值,也不能为元组增加或删除元素,因此,元组没有提供append()/extend()/insert()等方法,也没有remove()/pop()方法;
· 元组的访问速度比列表更快,开销更小,如果定义了一系列常量值,主要用途只是对它们进行遍历或其他类似操作,那么一般建议使用元组而不使用列表;
· 元组可以使得代码更加安全,例如,调用函数时使用元组传递参数可以防止在函数中修改元组,而使用列表则无法保证这一点;
· 元组可用作字典的键,也可以作为集合的元素,但列表不可以,包含列表的元组也不可以
生成器表达式
gen = [2**i for i in range(64) ] #创建生成器,只能使用一次,然后失效
切片操作
· 适用于列表和元组;
· 切片是用来获取列表,元组,字符串等有序序列中部分元素的一种语法,在形式上,切片使用2个冒号分隔的3个数字来完成;
· [start:end:step]
· 其中第一个数字start表示切片开始位置,默认为0;第二个数字end表示切片截止(但不包含)位置(默认为列表长度);第三个数字step表示切片的步长(默认为1),省略步长时还可以同时省略最后一个冒号;
· 当step为负整数时,表示反向切片,这时start应该在end的右侧
字典
基本概念
· 字典是无序的对象集合,使用键-值(key-value)存储,具有极快的查找速度
· 键(key)必须使用不可变类型
· 同一个字典中,键(key)必须是唯一的
· 字典的每个键值对(key→value)用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{ }中,格式如下所示:
· dic = {key1 : value1 , key2 : value2}
常用方法
· 字典键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一
创建字典:基础语法方式
· 字典中值可以取任何数据类型,但键必须是不可变的如字符串,数字或元组
· 如:dict = {' Alice':'2341','Beth':'9102','Cecil':'3258'}
· 也可如此创建字典
· 如:dict1 = {'abc':456};
· dict2 = {'abc':123,98.6:37}
· 创建字典:dict函数
· 使用dict函数,通过其他映射(比如字典)或者(键,值)序列对创建字典
(其中圆括号为元组,元组中有两个元素,分别对应键和值)
· dict函数也可以通过关键字参数来创建字典
(等号前后分别是键和值)
字典元素修改、添加与删除
1 当以指定"键"为下表为字典赋值时,有两种含义:1)若该"键"存在,表示修改为该"键"对应的值;2)若该"键"不存在,表示添加一个新元素;
2 使用字典对象update()方法可以将另一个字典的元素一次性全部添加到当前字典对象,如果两个字典中存在相同的"键",则以另一个字典中的"键"为准对当前字典进行更新;
3 可以使用字典对象的pop()删除指定"键"对应的元素,同时返回对应的"值";
4 popitem()方法用于删除字典的一个键值对,并返回一个包含两个元素的元组,其中的两个元素分别是字典元素的"键"和"值";(默认删除最后一对)
5 也可以使用del删除指定的"键"对应的元素;
集合
概述
· python集合是无序,可变的容器对象,所有元素放在一对大括号中,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,不允许重复
· 集合中只能包含数字,字符串,元组等不可变类型的数据,而不能包含列表,字典,集合等可变类型的数据,包含列表等可变类型数据的元组也不能作为集合的元素
· 集合中的元素是无序的,元素存储顺序和添加顺序并不一致
· 集合不支持使用下标直接访问特定位置上的元素(索引),也不支持使用random中的choice()函数从集合中随机选取元素(切片),但支持使用random模块中的sample()函数随机选取部分元素
集合常用方法
· s = add(x): 将元素x 添加到集合s中没如果元素已存在,则不进行任何操作
· s = update(x): 将x的元素添加到集合s中,x可以是列表,元组,字典等
· s.pop(x): 随机删除集合中的一个元素
· s.remove(x): 将元素x从集合s中移除,如果元素不存在,则会发生错误
· s.discard(x): 将元素x从集合s中移除,如果元素不存在,不会发生错误
7. 字符串
概述
· 字符串(str)使用双引号""或单引号''括起来的一个或多个字符
· 字符串可以保存在变量中,也可以单独存在
· 字符串术语不可变对象,所有方法都是返回处理后的字符串或字节后,不对原字符串进行任何修改
· 可以用type()函数测试一个字符串的类型
· 字符串是一个字符序列,字符自最左端位置标记为0,依次增加,字符串的编号叫做"索引"
转义
· python语言转义符:。在字符串中表示转义,即该字符与后面相邻的一个字符共同组成了新的含义
· 输出带有引号的字符串,可以使用转义符
· 使用输出带有转义符的字符换
· 用转义符可以在字符串中表达一些不可直接打印的信息,例如:用表示换行;表示制表符
字符串操作
· 单个索引辅助访问字符串中的特定位置。格式为[]
· python中字符串索引从0开始,一个长度为L的字符串最后一个字符的索引值为L-1
· python同时允许使用附属从字符串右边末尾位置向左边进行反向索引,最右侧索引值是-1
· 可以通过两个索引值确定一个位置范围(切片),返回这个范围的子串,字符串的切片格式:[:]
· start和end都是整数型树脂,这个子序列从索引start开始知道索引end结束,但不包括
· end
· 字符串之间可以通过+或*进行连接
· 加法操作将两个字符串连接成为一个新的字符串
· 乘法操作生成一个由其本身字符串重复连接而成的字符串
· x in s:如果x是s的子串,返回TRUE,否则返回FALSE
· str[N:M]:切片,返回子串
· len()函数返回一个字符串的长度
· 大多数数据类型都可以通过str()函数转换为字符串
字符串遍历操作
· 可以通过for和in组成的循环来遍历字符串中每个字符
· for in :
· 字符串处理方法
常用方法
· index(x)(从左开始索引),rindex(x)(从右开始索引):检测x是否包含在字符串中,返回相应的索引值,如果不存在,返回异常
· count(x):返回str在string中出现的次数
· replace(str1,str2,[,max]):把该字符窜中str1换成str2,如果max指定,则替换不超过max次
· maketrans():创建字符映射的转换表
· translate(str):根据str给出的映射转换表转化string字符
· ljust(width[,fillchar]):返回一个原字符串左对齐,并使用fillchar填充至长度width的新字符串,fillchar默认为空格。rjust()(右对齐),center()(居中)类似。
· split(str = "",num = string.count(str)),其中num = string.count(str)以str为分隔符截取字符串,如果num有指定值,则仅截取num+个子字符串。rsplit()类似,从右侧开始截取。
· join(seq):以指定字符串作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串
· lower():全部小写输出
· upper():全部大写输出
· capitalize():只有首词首字母大写输出
· title():每个词首字母大写输出
· swapcase():将原字符串大小写互换输出
· startswith()、endswith():检查字符串是否以指定子字符串substr开头或结束,是则返回True
· strip()、rstrip()、lstrup():截取子串的指定字符(左、右、中)