python第三节尚学堂
可变字符串
python中字符串属于不可变对象,所以只能调用io.StringIo
io.StringIO
>>> import io
>>> s = "hello,sxt"
>>> sio = io.StringIO(s)
>>> sio
<_io.StringIO object at 0x00000262E80F8B88>
>>> sio.getvalue()
'hello,sxt'
>>> sio.seek(7)
7
>>> sio.write("g")
1
>>> sio.getvalue()
'hello,sgt'
>>>
基本运算符
1.比较运算符可以连用
2.位操作
例如:按位与 :&
10111&10000=00111
也就是不同为0,相同为1,1+0=0,0+0=1,1+1=1.
按位异或:不同为1,相同为0,符号为^
按位或:值等于前面的,如a|b=a,b|a=b.
<<左移1位相当于乘以2,2相当于乘以4,3相当于8,4相当于16
<<右移1位相当于乘以2,2相当于乘以4,3相当于8,4相当于16
python不支持自增++和自减--
序列
列表
与c语言的数组不同的是,列表大小可变,根据需要随时增加或缩小。
列表的创建
.1.基本语法[]创建
2.list()创建
range()创建整数列表
注意:range(3,10)右边不包括10,为3,4,5,6,7,8,9
range(15,10,-1)右边不包括10,为15,14,13,12,11
即报左不报右,取[3,10)的整数
推导式生成列表(简介一下,重点在for循环后讲)
列表元素的增加和删除
考虑效率问题,一般只在列表尾部添加和删除元素。
append()方法
是真正的列表尾部添加新的元素,速度最快,建议使用!
+运算符
不是真的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。
extend()
适用于两个列表的连接,原地操作,效率也较高
insert()
插入任意位置。效率慢,大量移动。
乘法扩展
列表元素的删除
del删除
底层原理仍然是拷贝,和列表元素的添加原理一样。
pop()方法
remove()方法
(操作的是元素,和上面两个不一样,上面两操作的是索引位置即偏移量)
删除首次出现的元素,若不存在则抛出异常
列表元素访问和计数
通过索引直接访问元素
index()
count()获得指定元素在列表中出现的次数
len()返回列表长度
成员资格判断
count() 大于0,存在
in 一般用in判断
切片操作
列表的遍历
for obj in listObj:
print(obj)
列表排序
修改原列表,不建新列表的排序
a.sort() #升序
a.sort(reverse = True) #降序排序
random() #打乱排序
建新列表的排序
sorted()
>>> a=[10, 20, 30, 25]
>>> id(a)
2623824047112
>>> a =sorted(a)
>>> id(a)
2623823873160
>>> a
[10, 20, 25, 30]
>>>
reversed()返回迭代器
max(a)
min(a)
sum(a)
多维列表
用的一般是一维,二维。
打印二维列表:
a = [
["高小一",18,30000,"北京"],
["高小二",19,20000,"上海"],
["高小三",20,10000,"深圳"]
]
for m in range(3):
for n in range(4):
print(a[m][n],end="\t")
print()
元组tuple
列表中都讲过,所以就是列表的复习。
元组的创建
通过tuple()创建元组
元组的元素的访问和计数
不能修改,
排序只能用sorted()生成的新的列表,注意生成的是列表,因为元组对象不能修改,所以不能用sort()
zip(列表1,列表2,列表3)
生成器推导式创建
只能访问一次生成器对象
s._next_()
元组总结
1.元组的核心特点是:不可变序列
2.元组的访问和处理速度比列表快
3.与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。