可变字符串,其实是定义了一个新类
import io
s = 'hello 文章'
s = io.StringIO(s)
#接口,看下源码
s.getvalue()
s.seek()
s.write()
例如
import io
s = '好好学算法'
s = io.StringIO(s)
s.seek(2)
s.write('思考')
print(s.getvalue())
#好好思考法
位运算符
| & ~ ^ >> <<
序列的存储方式,一张图
列表
list(iterable)
list()空列表
range(start,end,step)#和索引一样,前包后不包
列表推导式,格式
[a for a in range(100) if a >1]
列表增删
尽量只在尾部增删元素,否则涉及列表元素大量移动
+操作会创建新的列表对象,涉及大量复制操作,不建议
li.extend()将目标列表所有元素加到本列表尾部,属于原地操作,看看源码
li.insert(num,ele)在索引num之前插入ele,底层元素向后复制,地址不变
del li[num]
底层是后面的元素向前拷贝,不改变列表对象地址
li.pop(),删除尾部并且弹回;可指定删除的下标,地址不变
li.remove(ele)删除首次出现的指定元素,若无,则抛出异常,地址不变
lli.index()看看源码
li.count()计数
li.sorrt()排序,不改变地址
sorted(li)排序返回新列表
reversed(li)返回一个迭代器,只能用一次
元祖
(1,)
tuple()空
tuple(iterable)
sorted(iterable) 返回一个列表
zip()看看源码
生成器推导式
生成器推导式与列表推导式形式类似,只是生成器推导式使用小括号,生成器推导式返回一个生成器
对象。可以通过生成器对象转化成列表或者元祖,也可以使用生成器对象的__next()__方法,或者直接作为迭代器对象使用。不管什么方式,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象。
元祖
元祖的访问和处理速度一列表快
元祖和整数、字符串一样,可以作为字典的键,列表不可以
2020.3.19