列表的操作
1、索引、切片
基本同字符串的索引和切片
2、增删改查
#增 append insert extend (操作均没有返回值)
# append 追加,给列表的最后面追加一个元素
s = ['a','b','wd']
s.append('666')
print(s) #['a', 'b', 'wd', '666']
# insert 插入在列表的任意位置插入元素(第一个参数为插入位置的索引)
s = ['a','b','wd']
s.insert(1,'666')
print(s) #['a', '666', 'b', 'wd']
# extend 迭代着追加,在列表的最后面迭代着追加一组数据
s = ['a','b','wd']
s.extend('N2是')
print(s) #['a', 'b', 'wd', 'N', '2', '是']
#删 pop remove clear del (其中只有pop有返回值,返回内容为删除的元素)
# pop 通过索引删除列表中对应的元素,该方法有返回值,返回值为删除的元素
s = ['a', 'b', 'wd', 'N', '2', '是']
element = s.pop(1) #不传参默认删除最后一个
print(element,s) #b ['a', 'wd', 'N', '2', '是']
# remove 通过元素删除列表中该元素
s = ['a', 'b', 'wd', 'N', '2', '是']
s.remove('wd') #不传参默认删除最后一个
print(s)
# clear 清空列表
s = ['a', 'b', 'wd', 'N', '2', '是']
s.clear()
print(s) #[]
# del 按照索引删除该元素/切片删除该元素/切片(步长)删除该元素
s = ['a', 'b', 'wd', 'N', '2', '是']
del s[2]
print(s) #['a', 'b', 'N', '2', '是']
s = ['a', 'b', 'wd', 'N', '2', '是']
del s[2:]
print(s) #['a', 'b']
s = ['a', 'b', 'wd', 'N', '2', '是']
del s[::2]
print(s) #['b', 'N', '是']
#改
#按照索引值
s = ['a', 'b', 'wd', 'N', '2', '是']
s[2] = 'sb'
print(s) #['a', 'b', 'sb', 'N', '2', '是']
#按照切片改值(迭代着增加)
s = ['a', 'b', 'wd', 'N', '2', '是']
s[2:] = 'sba' #按照切片规则把切出来的片段替换为字符串迭代后的结果
print(s) #['a', 'b', 's', 'b', 'a']
#按照切片(步长)改值(必须一一对应)
s = ['a', 'b', 'wd', 'N', '2', '是']
s[2:5:2] = 'sb'
print(s) #['a', 'b', 's', 'N', 'b', '是']
#查 通过切片或者循环
for i in s:
print(i)
print(s[0:2])
3、排序、嵌套
#计算列表的长度用len(),用法基本同字符串的操作
#排序
li = [1,5,4,7,6,2,3]
li.sort() #正向排序
print(li) #[1,2,3,4,5,6,7]
li.sort(reverse=True) #反向排序
li.reverse() #反转
#嵌套
s = ['avsd','vd',23,['sd','csdv',7],'acr']
#可以类比C++中的二维数组对其中嵌套的列表元素进行操作
print(s[3][1]) #csdv
元组的操作
元祖 只读列表,可循环查询,可切片。元组中的元素不能修改,但是元组中的诸如列表内的元素可能可以修改
tu = (1,2,3,'alice',[2,3,4,'jason'],'mike')
#索引和切片参考列表的相关操作
#如这个元组只能对其中的列表进行相关修改,如:
tu[4][3]=tu[4][3].upper()
tu[4].append('sb')
其他操作
# list --> str join
li = ['jason','alice','mike','hacker']
s = '+'.join(li)
#join作用是把原列表(字符串也可)迭代拆分之后在每两个元素间用引号内符号隔开
print(s) #jason+alice+mike+hacker
# str --> list split() 参考
# range 三个参数依次为始、末和步长,步长缺省则默认为1,起始数字缺省则默认为0,操作基本同切片
两道例题
