通用序列(字符串、列表、元组)操作
- 索引#可连用[ ][ ],返回单独元素#成员类型
- 切片s=[开始:结束:步长] #对什么数据类型进行切片,得到的片段就是该类型,步长相当于跳跃的步数,默认为1,其正负代表切片顺序
b[::] #从头切到尾
b[::-1] #逆序
a[1:-6:-1] #方向与指定头尾不对应,得到[]
a[1:-6] #正确
- in 和not in 判断元素是否在序列中
- +连接和*重复
- list.count(item#元素#) 计算元素出现个数,不存在,返回0
- interable.index() #返回一个值在序列中指定范围第一次出现的索引位置
- s.index(x,start,end) #序列s中从i开始到j位置中第一次出现元素x的位置,不存在则报错
- rindex() #返回最后一次出现,从尾部往前找
- all(iterable):判断可迭代对象的每个元素是否都为True值,若是,则返回True
- any(interable):判断可迭代对象的元素是否有为True值的元素,若是,则返回True
列表[ ] :参数可以是字符串、集合、元组和字典,整数,浮点数和布尔值
- 创建
- list()#空列表# 转换,list(参数)#参数可以是字符串、集合、列表、元组和字典(可迭代对象),不能是整数,浮点数和布尔值#
- [ ]创建空列表或列出所有元素
*list[range()] 创建出来的一个列表,可迭代
- 元素修改与删除
list[2]=8,#用元素赋值的方式修改# del list[1]或list[2:8]#删除一个或多个元素#
- 分片赋值
list[2:9]=lt#lt是一个列表,将原列表中的一个片段替换掉,也可用于删除和插入#
常用方法 列表专用
添加
- list.extend([ ])#一次在列表末端插入多个元素(循环访问),对列表进行原地修改。 #*和+连接不同,+连接会产生新列表,而原先两个列表依然存在。
extend完全替换掉原列表,相当于+=
- list.append()#在列表末端插入元素,一次只能插入一个##返回值是none
eg. ls=[1,2,3,4] s2=[5,6,7]
ls.extend(s2)=[1,2,3,4,5,6,7]#遍历s2#
ls.append(s2)=[1,2,3,4[5,6,7]]#将s2视作一个元素插入#
bir=[] for i in range(1,23): bir.append(random.randint(1,365)) print(bir)
- list.insert(i,x)#在第i位置添加x元素
删除
- ls.pop()#移除并返回列表中指定某位置的元素,若不指定,则返回最后一个元素#
*append与pop合用解决先进先出队列操作
- list.remove('招商银行')#移除某个元素
ls.copy() #复制并生成一个新列表#
为什么不直接用赋值代替?赋值≠复制
但只有可变对象会存在此类情况,不可变对象如int即便赋值也是两个独立的变量
eg. info=['ymx','42104266']
term1=info #这一步叫赋值,info里的对象将和term1完全一样#
print(term1) term1.extend([100,99]) print(term1) print(info)
输出结果:['ymx', '42104266'] ['ymx', '42104266', 100, 99] ['ymx', '42104266', 100, 99]
copy()的结果则不同
info=['ymx','42104266']
term1=info.copy()#这一步复制了info中的对象到term1,但两者是单独的
print(term1) term1.extend([100,99]) print(term1) print(info)
输出结果:['ymx', '42104266'] ['ymx', '42104266', 100, 99] ['ymx', '42104266']
其他
- sort() #排序,详细的在函数章函数
stock_list.sort(key=lambda x:x[1])#key后面给了排序的根据
- list.clear(#无参数)#清空所有元素,剩空列表
元组
- 创建
- 空元组:(),tuple() #和列表相似 #参数必须是可迭代序列
- ()#列出所有元素
- 元组中只包含一个元素时,需要在元素后面添加逗号
tup1 = (50,)
- 多重赋值 列表和元组都有
f1,f1=(‘a’,‘b’)
- 不可变
元组的顶层元素不可变,但若某个元素是列表,则列表数据可变
zip函数#将一些并排的元素配对组成元组,(压缩),形成一个可迭代对象#