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 "", line 1, in 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(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 "", line 1, in
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)) >>> sat 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 "", line 1, in s.__next__() StopIteration##空了 >>>



