可变字符串
在py中,字符串属于不可变对象,不支持原地修改,如果要改,只能创建新的字符串对象。但是如果要经常原地修改字符串,可以使用io.StringIO对象或者array模块。
>>> import io
>>> s = "hello, world"
>>> sio = io.StringIO(s)
>>> sio
<_io.StringIO object at 0x000001CE97950F70>
>>> sio.getvalue()
'hello, world'
>>> sio.seek(7)
7
>>> sio.write("#")
1
>>> sio.getvalue()
'hello, #orld'
运算符——位运算
& | ^ (按位与、按位或、按位异或)
<<、>> (位移)
~按位翻转
比较运算符可以连用,如:
>>>a=3
>>>0<a<9
True
位运算
>>> a=0b11001
>>> b=0b01000
>>> b=0b01000
>>> a
25
>>> c=a|b
>>> c
25
>>> bin(c)
'0b11001'
>>> bin(a^b)
'0b10001'
位移
左移1位相当于乘以2,左移两位相当于乘以4
右移1位相当于除以2
>>> a=3
>>> a<<2
12
>>> a=36
>>> a>>2
9
加号:
(1)数字相加->加法
(2)字符串->拼接
(3)列表、元祖->合并
乘法:
(1)数字
(2)字符串复制
(3)列表,元祖->复制
注:python不支持自增(++)和自减(–)
序列
python中一切皆对象
注:图片来自尚学堂·百战程序员
列表创建:[]
list()创建
a=list()
a = list(range(10))
a
[0,1,2,3,4,5,6,7,8,9]
range()创建整数列表:range()可以帮助我们非常方便地创建证书列表
range([start,]end[,step])
start:默认0
step:默认为1
推导式
a = [x*2 for x in rang(5)]
a
[0,2,4,6]
a=[x*2 for x in range(100) if (x%9==0)]
a
[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]
元素的五种添加方式
append():原地添加,尾部添加,效率最高
+运算:不是原地添加,而是创建新的列表对象,将原来的列表对象赋给新的列表对象
extend():原地扩展,不涉及到创建新的对象,效率高
insert():插入到任意位置,设计数组的移动拷贝,尽量避免大量使用
乘法扩展:复制的过程。
元素删除:
del删除,实际上也是数组的拷贝覆盖
pop()方法:
删除并返回指定位置元素,如果未指定位置,则默认最后一个
remove()方法:删除首次出现的指定元素,若不存在啊,抛出异常
列表元素访问和计数
通过索引直接访问
index()获得指定元素在列表中首次出现的位置
count()获得指定元素出现的次数
成员资格判断
in:判断指定元素是否在列表里(如 20 in a)
切片操作slice
[start:end[:step]] start、end左闭右开
>>> a=[10,20,30,40,50,60]
>>> a[:]
[10, 20, 30, 40, 50, 60]
>>> a[1:3]
[20, 30]
>>> a[1::2]
[20, 40, 60]
>>> a[:2]
[10, 20]
>>> a[::-1]
[60, 50, 40, 30, 20, 10]
>>> a[-1:-4:-2]
[60, 40]
列表排序
修改原列表,不建新列表的排序:sort
a.sort() #默认是升序排序
a.sort(reverse = True) #降序排序
import random
random.shuffle(a) #打乱排序
新建列表的排序:sorted()
返回新列表,不对原列表做修改
reversed()返回迭代器
逆序排序,不对原列表做任何修改,返回逆序排列的迭代器对象
max()、min()
sum()
多维列表
二维列表[[],[],[],[]]
>>> a=[["张三",20,123],["李四",12,124],["王五",31,144]]
>>> a[1]
['李四', 12, 124]
>>> a[0][2]
123
元祖 tuple
不可变序列,不能修改元祖中的元素(增、删、改)
可以进行的操作:
索引访问、切片操作、连接操作、成员关系操作、比较运算、计数(len() max() min() sum() )
创建:通过()创建
>>> a
(10, 20, 30)
>>> type(a)
<class 'tuple'>
>>> b=(20)
>>> type(b)
<class 'int'>
>>> b=(30,)
>>> type(b)
<class 'tuple'>
>>> c=tuple()
>>> c
()
>>> b = tuple("abcd")
>>> b
('a', 'b', 'c', 'd')
>>> del b
元祖元素的访问
>>>a=(1,2,3)
>>>a[0]
1
sorted(tupleObj)返回新的列表对象
zip(列表1,列表2,…):将多个列表对应位置的元素合成为元祖,并返回zip对象
>>> a=[1,2]
>>> b=[0,1]
>>> c=[4,5]
>>> d = zip(a,b,c)
>>> d
<zip object at 0x000001CE97985140>
>>> list(d)
[(1, 0, 4), (2, 1, 5)]
生成推导式创建元祖
与列表类似,元祖用小括号
返回的不是列表、元祖,而是生成器对象