一,字符串补充内容
1,可变字符串:命令:io.StringIO()
用法如下:
>>> import io
>>> s='123'
>>> id(s)
2764112685912
>>> sio=io.StringIO(s)
>>> id(sio)
2764111978568
>>> sio.getvalue()
'123'
>>> sio.seek(2) #指针到2位置
2
>>> sio.write('4')
1
>>> sio.getvalue()
'124'
由代码可知,该命令是将字符串s转化为sio,不产生新的对象。
2,常用运算符与问题
| and,or,not | 逻辑运算符与,或,非 |
|---|---|
| is,is not | 同一性判断 |
| <,<=,>,>=,==!= | 比较操作符,比较值 |
| ^,I,& | 位操作符,按位异或,或,与 |
| <<,>> | 位操作符,左移,右移 |
| ~ | 位操作符,按位翻转 |
| +,-,*,/,//,%,** | 算数运算符 |
(1)3<a<10,在python中是允许的
(2)位操作
>>> a=0b10010
>>> b=0b11001
>>> c=a|b
>>> c
27
>>> bin(c)
'0b11011'
>>>
可以看到位操作的默认输出为十进制,用bin()命令将其转化为二进制。
移位操作:
a=8
>>> a<<2
32
(3),运算优先级问题
位运算与算数运算>比较运算>赋值运算>逻辑运算
二,列表
1,列表可以存储任意类型的数据。
列表的创建:
(1)用[]直接创建
(2)用list()完成创建,该命令可将其他可迭代的数据转化为列表。
(3)range(start,end,step)创建一个整数列表,用list()转化。
注意这里用,隔开
(4)推导式生成列表
如下:
>>> a=[x*2 for x in range(1,50,2) if x%3==0]
>>> a
[6, 18, 30, 42, 54, 66, 78, 90]
2,列表元素的增加与删除
(1)尽量减少对列表中间元素进行增加或删除,因为涉及大量粘贴,最好在尾部进行
(2)增加元素
append()方法。直接在尾部添加一个元素,不产生新的列表对象
格式如:a.append(20)
+运算符。格式如:a+[50],注意【】不能少,而且会产生新的列表对象。
extend()方法。用于两个列表相加。格式:a.extend(b),在添加过程中不产生新的对象,且执行完命令后新列表保存在a中
insert()方法.在指定位置插入:
a=[1,2,3]
>>> a.insert(2,1)
>>> a
[1, 2, 1, 3]
同样结果保存在a中,即不产生新对象
(3)列表元素删除
del()删除,不产生新对象
a
[1, 2, 1, 3]
>>> del a[2]
>>> a
[1, 2, 3]
pop方法.不产生新对象,会弹出删除值
a=[1,2,3,4,5,6]
>>> a.pop()
6
>>> a
[1, 2, 3, 4, 5]
>>> a.pop(2)
3
>>> a
[1, 2, 4, 5]
remove()方法:特殊在于直接以具体值删除
a
[1, 2, 4, 5]
>>> a.remove(2)
>>> a
[1, 4, 5]
>>>
clear(),删除所有元素只留空列表
a
[1, 4, 5]
>>> a.clear()
>>> a
(4)列表元素访问与计数
直接访问.如a[2]
index().返回首次的索引值.如
a=[1,2,3,3,4,2,1]
>>> a.index(3)
2
a.index(3,3,5)
3
>>>
该方法也可以限定范围.
count(),计算某元素出现次数.如a.count(3)
len(),计算列表中的元素个数,如len(a)
成员资格判断:3 in a或者a.count(3)>0
(5)切片操作
同字符串操作,如下:
>>> a=[1,2,3,4,5,6,7,8,'lhy']
>>> a[:]
[1, 2, 3, 4, 5, 6, 7, 8, 'lhy']
>>> a[1:3]
[2, 3]
>>> a[:3]
[1, 2, 3]
>>> a[::-1]
['lhy', 8, 7, 6, 5, 4, 3, 2, 1]
>>> a[5:1:-1]
[6, 5, 4, 3]
>>> a[-3:-5:-1]
[7, 6]
>>>
(6)列表的遍历
如下:
>>> for i in a:
print(i)
1
2
3
4
5
6
7
8
lhy
>>> a=['123','456','lhy',1]
>>> for i in a:
print(i)
123
456
lhy
1
(7)列表的排序
1 修改原列表,不建立新列表的方法
a.sort()升序
a.sort(reverse=Ture)降序
random.shuffle(a)随机排列
2 建立新列表的排序
sorted(a)升序
sorted(a,reverse=Ture)降序
(8)reversed()返回迭代器
注意迭代器只能用一次,因为用过一次后指针已经偏移
> a
['lhy', 1, '456', '123']
>>> c=reversed(a)
>>> c
<list_reverseiterator object at 0x00000207D656BB70>
>>> list(c)
['123', '456', 1, 'lhy']
>>> list(c)
[]
max(a)返回最大值
min(a)返回最小值
sum(a)求和,注意只适用于数字
(8)二维列表:用来存储二维,表格数据
如:
a=[
['高小一',18,30000,'北京'],
['高小二',18,20000,'上海'],
['高小三',18,10000,'深圳']
]
for m in range(3):
for n in range(4):
print(a[m][n],end='\t')
print()
高小一 18 30000 北京
高小二 18 20000 上海
高小三 18 10000 深圳
>>>
注意,子列表之间有,隔开.索引用a[m][n]的形式
三,元组
1,特点:不可变序列
处理速度比列表快
与整数,字符串一样,元组可以作为字典的键,而列表不可以.
2,元组的创建
(1)()创建并且()可以省略
注意a=(20)类型为int
a=(20,)类型为tuple
(2)tuple()来创建与转化元组
(3)用del a来删除一个元组,整个删除
3,元组元素访问
(1)a[0]直接访问
(2)a[1:3]切片访问
4,对元组排序只能用sorted(a),且最后返回一个列表
如:
a=(3,65,3,4,1,4,6)
>>> sorted(a)
[1, 3, 3, 4, 4, 6, 65]
5,zip将多个列表对应元素组合成元组,返回zip对象
如:
a=[1,2,3]
>>> b=[5,6,7]
>>> zip(a,b)
<zip object at 0x0000020118778E88>
>>> d=zip(a,b)
>>> d
<zip object at 0x0000020118778CC8>
>>> tuple(d)
((1, 5), (2, 6), (3, 7))
>>>
5,可利用生成器推导式创建元组,注意返回的是生成器对象
s=(x*2 for x in range(5))
>>> s
<generator object <genexpr> at 0x000002011874ECA8>
>>> s=[x*2 for x in range(5)]
>>> s
[0, 2, 4, 6, 8]
所以要用list()或tuple()转化,这是元组与列表在生成器的区别.
也可用s.next()遍历数据
>>> s=(x*2 for x in range(5))
>>> s
<generator object <genexpr> at 0x000002011874ECA8>
>>> s.__next__()
0
>>> s.__next__()
2
>>> s.__next__()
4
>>> s.__next__()
6
>>> s.__next__()
8
>>> s.__next__()
Traceback (most recent call last):
File "<pyshell#155>", line 1, in <module>
s.__next__()
StopIteration
>>>
可以看到指针一个一个移动,超出范围就会报错.
来源:CSDN
作者:pu_pupupupupu
链接:https://blog.csdn.net/pu_pupupupupu/article/details/104539265