Python学习第三天
可变字符串
在pyhton中,字符串不可变。可以使用io.StringIO对象或array模块原地修改字符串。
import io
s='hello,sxt'
sio=io.StringIO(s)
print(sio.getvalue())
sio.seek(7)
sio.write('g')
print(sio.getvalue())
比较运算符可以连用
3<a<10
位操作
-
&=按位与
-
|=按位或
-
^=按位异
-
<<左移1位相当于乘以2;左移两位相当于乘以4
-
>>右移1位相当于除以2;右移两位相当于除以4
运算符优先级问题
复杂表达式一定要使用小括号组织
-
先乘除,后加减
-
位运算和算术运算>比较运算符>赋值运算符
序列
序列是一种数据存储方式,用来存储一系列的数据。在内容中,序列就是一块用来存放多个值的连续的内存空间。
常见的序列结构有:字符串、列表、元祖、字典、集合
列表:
用于存储任意数目、任意类型的数据集合。
列表的大小可变。
列表的创建
基本语法[]创建
a=[]
list()创建
list可以将任何可迭代的数据转变成列表
a=list('zifuchuan')
range()创建整数参数
range([start,]end[,step])
-
start可选,表示起始数字,默认0
-
end必选,表示结尾数字
-
step可选,表示步长,默认1
推导式生成列表
a=[x*2 for x in range(5)] #循环创建多个元素
a=[x*2 for x in range(100) if x%9==0] #通过if过滤元素
列表元素的增加和删除
append()
原地修改列表对象,尾部添加新元素,速度最快,推荐使用
a=[20,40]
print(a.append(80))
+运算符操作
将原列表元素和新列表元素依次复制到新的列表对象中。涉及大量复制操作,操作大量元素不建议使用。
extend()
将目标列表所有元素添加到尾部,不创建新的列表对象。两个列表整合时推荐使用
。
insert()
指定元素插入到列表对象的任意位置。涉及大量元素时,尽量避免使用。类似移动函数还有:remove()、pop()、del(),他们在删除非尾部元素是也会元素移动。
乘法拓展
a=['a',100]
b=a*3
print(b)
列表元素的删除
del删除
删除列表指定位置的元素
a=[10,20,30]
del a[1]
print(a)
pop()方法
pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个位置
a=[10,20,30]
b=a.pop()
print(b)
remove()方法
删除首次出现的指定元素,不存在则异常
列表元素访问和计数
通过索引直接访问元素
索引区间[0,列表长度-1],超过范围则报错
index()获得指定元素在列表中首次出现的索引
语法:index(value,[start,[end]])
a=[10,20,30,40,50]
a.index(50,3)
count()获得指定元素在列表中出现的次数
a=[10,20,30,20,50]
a.count(20)
len()返回列表长度
列表中元素的个数
成员资格判断
in关键字判断
a=[10,20,30,40,50]
20 in a
列表切片操作
典型操作
切片不在范围内也不会报错。起始偏移量小于0则会被当成0,终止偏移量大于长度-1则会被当成长度-1
列表遍历
for obj in listObj:
print(obj)
列表排序
修改原列表,不生成新列表的排序
a=[40,10,20,30]
a.sort() #默认升序
a.sort(reverse=True) #降序排列
import random
random.shuffle(a) #随机打乱顺序
建新列表的排序
内置函数sorted(),这个方法返回新列表,不对原列表修改
a=[40,10,20,30]
a=sorted()
c=sorted(a,reverse=True)
reversed()返回迭代器
内置函数reversed()也支持逆序排列,不对原列表做修改。
max和min
返回列表中的最大最小值
sum
对数值型列表所有列表求和,非数值型报错
多维列表
二维列表
-
一维列表帮助存储一维、线性的数据。
-
二维列表帮助存储二维、表格的数据。
a=[
['高一',18,3000,'北京']
['高二',17,2000,'上海']
['高三',19,1000,'深圳']
]
print(a[0][3])
嵌套循环打印二维列表的所有数据
a=[
['高一',18,3000,'北京']
['高二',17,2000,'上海']
['高三',19,1000,'深圳']
]
for m in range(3):
for n in range(4):
print(a[m][n],end='\t')
print()#打印完一行,换行
元组tuple
可以修改列表中的元素,元组属于不可变序列。
元组支持如下操作:
-
索引访问
-
切片操作
-
连接操作
-
成员关系操作
-
比较运算操作
-
计数
元组的创建
-
通过()
a =(10,20,30) #小括号可以省略 a=(20,) #单元素加逗号
-
通过tuple()
b=tuple(可迭代的对象)
元组对象删除 del b
元组的元素访问和计数
-
元组的元素不能修改
-
访问和列表一样,返回的仍然是元组
-
如果要对元组排序,只能用sorted()生成新的列表对象
Zip
将多个列表对应位置的元素组合成为元组,并返回这个zip对象。
生成器推导式创建元组
生成器推导式用的小括号。生成器生成生成器对象,再转化成元组。
s=(x*2 for x in range(5))
print(tuple(s)) #只能访问一次元素,第二次就为空了。需要再生成一次。
print(s._next_()) #指针下移
元组可以作为字典的键,列表不行。