可变字符串:引用IO模块,a=io.StringIO(s) ,a.seek()先确定指针的位置,a.write(“需要改变的内容”)
基本运算符:
- 比较运算符可以连用3<a<10 ,
- #bin()可以把数字转成二进制表示
- 左移一位相当于乘以2,二位乘以4以此类推(a<<1);右移一位相当于除以2,二位除以4以此类推(a>>1)
- Python 不支持自增(++),自减(--),只能用a+=1
- 运算符优先级:乘除大于加减,位运算和算术运算>比较运算符>赋值运算符>逻辑判断
序列
Python中常用的序列结构有:字符串,列表,元组,字典,集合
序列中储存的是对象的地址,而不是对象的数值
列表
列表是任何元素的序列,而字符串只是一个字符的序列
列表的创建
- 基本语法[ ]创建 #a=[1,2,a,d,‘txy’], a=[ ]
- list( )创建,使用list可以将可迭代的数据转化成列表 #a=list("txy") 得到a =['t','x','y'], a=list(range(3))得到a=[0,1,2]
- range( )创建 range(start,end,step), start不选默认为0,step不选默认为1,end必须设定。取头不取尾
- 推导式生成列表 通常和for以及if语句结合使用 例a=[x*2 for x in range(5)] 得到a=[0 2 4 6 8]
列表元素的增加和删除
列表的增加
一般在列表的尾部进行增加,中间增加会增加内存。
- append() 直接讲元素加到列表尾部 例:a=[1,2], a.append(3),得到a=[1,2,3]
- +方法,对列表使用拼接操作,创建新的列表对象,不建议使用
- extend(), 一般用于两个列表整合,不会创建新的列表,效率较高
- insert(),一般用于将指定元素插入对象任意位置 例:a=[1,2], a.insert(1,5),得到a=[1,5,2]
- 乘法扩展
列表的删除
- del 删除 原理上还是数组的拷贝,避免在输出中间的元素(本质上和插入相同)
- pop()方法 删除并返回指定位置元素,如果未指定元素,则默认为最后一位
- remove() 括号里不再是索引位置而是元素内容,会删除第一个元素,若元素不存在则报错
列表元素访问和计数
通过索引直接访问
Index() 获得指定元素在列表中首次出现的索引 语法为:index(value,[start,[end]]),start和end决定了范围
count() 获得指定元素在列表中的次数
len() 获得元素的个数
成员资格判断: 直接使用in操作符来判断 也可以使用count来判断
列表的切片操作
切片slide可以快速提取或者修改子列表,格式为:[start:end:[step]] 遵循包头不包尾原则。
列表的排序
- 修改原列表,不建立新列表
sort() 默认为升序排列,sort(reverse=true) #降序排列, import random, random.shuffle(a)#随机排序
2. 新建列表的排序
通过内置函数sorted()#默认为升序,降序排列同上
3. reversed()返回迭代器
a=[1,2,3,4], c=reversed(a), list(c)=[4,3,2,1] #迭代器只能使用一次
二维列表
a=[
[ '' 姓名","年龄","性别" ]
[ '' 姓名1","年龄1","性别1" ]
[ '' 姓名2","年龄2","性别2" ]
] 可以通过正常索引来搜寻所需要的数据,例如a[2][1]="年龄2"
元组
和列表不同,元组属于不可变序列,元组的处理速度比列表快。
元组的创建
1.通过()创建,括号可以省略 若元素只有一个,必须在元素后面加逗号,如果不加解释器会将元素认为数而不是元组
2.通过turple()创建 turple(可迭代的对象),若括号里为空,则创建一个空元组对象 #和列表中的list原理相同
元组对象的删除 直接del指定完成删除
元组元素访问和计数
元组的元素是不能修改的,访问和列表相同,直接方括号访问,除了不能修改之外, 其他的内容和列表完全相同。
注意:元组排序中没有sort,若要排序只能使用内置函数sorted,而sorted都会生成列表而不是元组
ZIP:把多个列表组成位元组,并返回ZIP这个对象,通常再把整个元组再用list生成列表以便使用。
生成器推导式创建元组
大部分和列表生成相同,只不过生成器推导式使用小括号,同时也不是生成列表或者元组,而是一个生成器对象,通过生成器对象在转化成列表或者元组。生成器只能使用一次,第二次则为空需要再生成一个生成器如果需要使用。
可以通过__next__()来依次调用数据