1.可变字符串
修改字符串中的值,智能创建新的字符串
io.StringIO或array
>>> s="hello.sxt"
>>> import io
>>> sio=io.StringIO(s)
>>> sio
<_io.StringIO object at 0x00000230D228F0D8>
>>> sio.getvalue()
'hello.sxt'
>>> #看sio的值
>>> sio.seek(7)
7
>>> sio.write("g")
1
>>> sio.getvalue()
'hello.sgt'
>>>
2…基本运算符
见笔记
Python不支持自增和自减
a+=1
实际使用中,复杂的表达式要用小括号组织
位运算符>比较运算符>幅值运算符>逻辑运算符
第三章 序列
字符串 列表 元组 字典 集合
列表 常用方法见笔记
1.列表的创建
[]
list() :通常将可迭代的数据转化成列表
>>> a=[20,56,'jjio','数']
>>> a[3]
'数'
>>> ##从0开始
>>> a=[]##创建空列表
>>> b=list(gaoqi)
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
b=list(gaoqi)
NameError: name 'gaoqi' is not defined
>>> b=list('gaoqi')
>>> b
['g', 'a', 'o', 'q', 'i']
>>> a=range(10)
>>> list(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>>> a=range(10)
>>> list(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>>
>>> a=range(10)
>>> list(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range():创建整数列表
range([start,] end [,step])
>>> a=range(10)
>>> list(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(0,10,1))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(2,30,3))
[2, 5, 8, 11, 14, 17, 20, 23, 26, 29]
>>> list(range(20,3,-1))
[20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4]
>>> list(range(-10,-50,-6))
[-10, -16, -22, -28, -34, -40, -46]
推导式生成列表,重点和for循环一起使用
>>> a=[x*2 for x in range(5)]
>>> a
[0, 2, 4, 6, 8]
>>> 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]
2.列表元素的增加和删除
append() :直接在列表尾部添加新元素,速度最快,推荐使用
>>> a=[20,50]
>>> a.append(66)
>>> a
[20, 50, 66]
+运算符:直接拼接,会产生新对象 不建议使用
>>> a=a+[30]
>>> a
[20, 50, 66, 30]
extend()
:将目标列表添加尾部,不创建新的列表对象
>>> a=[20,50]
>>> a.extend(['jj',50])
>>> a
[20, 50, 'jj', 50]
insert()插入元素:将指定元素插入到列表对象的任意制定位置,不建议使用。在中间操作的还有 remove() pop() del()
>>> a=[10,20,30]
>>> a.insert(2,'gg')
>>> a
[10, 20, 'gg', 30]
乘法扩展:生成新列表,重复原列表
>>> a=['ddeed',555]
>>> b=a*5
>>> b
['ddeed', 555, 'ddeed', 555, 'ddeed', 555, 'ddeed', 555, 'ddeed', 555]
>>>
3.列表元素的删除
del() 删除列表制定位置的元素,在中间
>>> a=[20,30,50,4]
>>> del a[0]
>>> a
[30, 50, 4]
pop() 删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素
>>> a=[2,5,6,2,22,66]
>>> a.pop()
66
>>> a
[2, 5, 6, 2, 22]
>>> a.pop(0)
2
>>> a
[5, 6, 2, 22]
remove() 删除首次出现的指定元素,若不存在该元素,异常
>>> a=[55,2,556,33,5,2,444]
>>> a.remove(2)
>>> a
[55, 556, 33, 5, 2, 444]
4.列表元素的访问和计数
通过索引直接访问元素
imdex()获得指定元素在列表中首次出现的索引
index(value,[start],[end])
count()获得指定元素在列表中的次数
len()返回列表的长度,即列表的元素
成员资格的判断
可以用count(),一般没人用
也可用in
5.切片操作
slice 快速提取子列表或修改
[起始偏移量 start:终止偏移量 end [:步长step]]
典型操作见笔记
>>> a=[10,20,30,40,50,60]
>>> a[:]
[10, 20, 30, 40, 50, 60]
>>> a[1:3:1]
[20, 30]
>>> #包头不包尾
>>> a[1::2]
[20, 40, 60]
>>> a[1:]
[20, 30, 40, 50, 60]
>>> a[:2]
[10, 20]
>>> a[:-3]
[10, 20, 30]
>>> a[-3:]
[40, 50, 60]
>>> a[::-1]
[60, 50, 40, 30, 20, 10]
>>>
6.列表的遍历
>>> for x in a:
print(x)
10
20
30
40
50
60
>>>
7.列表的排序
修改原列表,不建新列表的排序
>>> a=[5,52,66,6,5,47,1,0,23]
>>> a.sort()#升序
>>> a
[0, 1, 5, 5, 6, 23, 47, 52, 66]
>>> a.sort(reverse=True) #降序
>>> a
[66, 52, 47, 23, 6, 5, 5, 1, 0]
>>> import random
>>> random.shuffle(a) #随机排列
>>> a
[1, 23, 5, 6, 5, 0, 52, 47, 66]
>>>
建新列表的排序
sorted()
>>> a=sorted(a)
>>> a
[0, 1, 5, 5, 6, 23, 47, 52, 66]
其他同理
reversed()返回迭代器,也支持返回逆序排列,只能用一次
返回逆序
>>> a[::-1]
[66, 52, 47, 23, 6, 5, 5, 1, 0]
>>> c=reversed(a)
>>> c
<list_reverseiterator object at 0x0000013AE7D34EC8> #返回迭代器
>>> list(c)
[66, 52, 47, 23, 6, 5, 5, 1, 0]
列表相关的其他内置函数
见笔记
8.多维列表
>>> a=[
["高小一",18,30000,"北京"],
["高小二",19,50000,"深圳"],
["高小三",20,6000,"上海"],
]
>>> a[0]
['高小一', 18, 30000, '北京']
>>> a[0][3]
'北京'
>>>
a=[
["高小一",18,30000,"北京"],
["高小二",19,50000,"深圳"],
["高小三",20,6000,"上海"],
]
for m in range(3):
for n in range(4):
print(a[m][n],end='\t')
print()
高小一 18 30000 北京
高小二 19 50000 深圳
高小三 20 6000 上海
9.元组 tuple
元组为不可变序列,不能修改元组中的元素,,用法参考list
创建、删除、访问、计数
>>> a=(5,6,88)
>>> a=5,6,88
>>> a=(20,)
>>> #元组用小括号,可以不加,只有一个对象时,末尾加“
>>> #元组用小括号,可以不加,只有一个对象时,末尾加,
>>> c=tuple()
>>> b=tuple("abc")
>>> b=tuple(range(4))
>>> b
(0, 1, 2, 3)
>>> b=range([5,6,7])
Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
b=range([5,6,7])
TypeError: 'list' object cannot be interpreted as an integer
>>> b=tuple([5,6,8])
>>> b
(5, 6, 8)
>>>
>删除
>>>> del b
>>> b
元组的元素访问和计数
与list一样
>>> a=(3,5,9,7,5)
>>> a[2]
9
>>> a=tuple("jiealkgjaealjgdiaea")
>>> a
('j', 'i', 'e', 'a', 'l', 'k', 'g', 'j', 'a', 'e', 'a', 'l', 'j', 'g', 'd', 'i', 'a', 'e', 'a')
>>> a[1:10]
('i', 'e', 'a', 'l', 'k', 'g', 'j', 'a', 'e'
>>>
排序 只能使用 sorted(),生成新的列表
>>> a=(20,5,6,9,41,)
>>> sorted(a)
[5, 6, 9, 20, 41]
>>>
zip(列表1,列表2,……)将多个列表对应位置的元素组合成为元组,并返回zip对象
>>> a=[10,20,30]
>>> b=[1,2,3]
>>> c=[4,5,6]
>>> d=(a,b,c)
>>> list(d)
[[10, 20, 30], [1, 2, 3], [4, 5, 6]]
>>>
10.生成器推导式创建元组
参照列表推导式,使用小括号
也可以使用对象的_ next _()方法遍历,或者直接作为迭代器对象来使用
>>> s=(x*2 for x in range(5))
>>> s
<generator object <genexpr> at 0x0000024F7093A948>
>>> tuple(s)
(0, 2, 4, 6, 8)
>>> list(s)
[]
>>> ##只能访问一次元素,第二次为空,需要再生成一次
>>>
>>> s=(x*2 for x in range(5))
>>> s.__next__()
0
>>> s.__next__()
2
>>> s.__next__()
4
>>> s.__next__()
6
>>> s.__next__()
8
>>> s.__next__()
Traceback (most recent call last):
File "<pyshell#91>", line 1, in <module>
s.__next__()
StopIteration##空了
>>>