Python列表的增删改查和元祖

来源:互联网 发布:linux shell面试题 编辑:程序博客网 时间:2024/06/06 08:54
一、定义列表
1.names = ['mike','mark','candice','laular'] #定义列表
2.num_list = list(range(1,10)) #range生成1-10范围内的数,并强制转化成列表
二、增:append()、insert()方法
1.append()方法:在末尾添加元素
#szz = ['ab','jhj','nhy']
#szz.append('msr')
#szz打印结果:['ab', 'jhj', 'nhy', 'msr']
2.insert()方法:在指定位置添加元素或者列表
#szz = ['ab','jhj','nhy']
#szz1 = ['msr','mike']
#szz.insert(0,'mark') #szz打印结果['mark', 'ab', 'jhj', 'nhy']
#szz.insert(0,szz1) #szz打印结果[['msr', 'mike'], 'ab', 'jhj', 'nhy']
三、删:del、pop()、remove()、clear()
1.del:可以删除指定下标的值
#del szz[1] #删除下标为1的值
2.pop()方法: #默认从列表的末尾删除,也可以删除指定的值
#szz.pop() #默认删除末尾的值
#szz.pop(1) #删除下标为1的值
3.remove()方法:删除指定的值
#szz =[['msr', 'mike'], 'ab', 'jhj', 'nhy']
#szz.remove('jhj') #在原list中的可以直接删除
#szz[0].remove('mike') #在另一个list里的需要定位到list才能删除,szz.remove('mike')这种方法是不能正确执行的,会报错ValueError: list.remove(x): x not in list
4.clear()方法:清空数据
#szz.clear() #清空列表数据,如果有嵌套list也直接清空,无需定位到嵌套的list再清空
四、改:
1.通过定位到下标直接修改
#['mark', 'ab', 'jhj', 'nhy']
#szz[1] = 'zzj'
#print(szz) #打印结果:['mark', 'zzj', 'jhj', 'nhy']
五、查:查询列表可通过下标和切片的方式
1.下标取值,从0开始
#names = ['mike','mark','candice','laular'] #定义列表
#print(names[2]) #读取列表的值
#num_list = list(range(1,10)) #range生成一个长度为10的列表
#print(num_list) #打印结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2.切片:顾头不顾尾,且切片下标的操作同样用于字符串
#names = ['mike','mark','candice','laular']
#info = 'abcdefghijklmn'
#num_list = list(range(1,10))
#print(names[1:3]) #通过切片方式取值,切片是顾头不顾尾,打印结果:['mark', 'candice']
#print(names[1:]) #取下标后面所有的值,打印结果:['mark', 'candice', 'laular']
#print(names[:3]) #取下标前面所有的值,打印结果:['mike', 'mark', 'candice']
#print(names[:]) #取所有的值,打印结果:['mike', 'mark', 'candice', 'laular']
#print(names[-1]) #取最后一个值,打印结果:laular
#print(names[:1:2])#隔几位取一次,默认不写步长为1,即隔一位取一次;结果为取下标为1之前的值,隔2位取一个['mike']
#print(num_list[::-1])#从后往前取值,步长为1,打印结果:['laular', 'candice', 'mark', 'mike']
#print(info[1:7]) #打印结果:bcdefg
六、列表其他方法:
1.index()方法:获取指定元素的下标
#szz.index('jhj')
2.count()方法:获取指定元素的次数
#szz.count('mike')
3.extend()方法:合并列表,修改原列表的值,只能合并到原列表的末尾
#szz = ['ab','jhj','nhy']
#szz1 = ['msr','mike']
#szz.extend(szz1) #打印结果:['ab', 'jhj', 'nhy', 'msr', 'mike']
4.sort()方法:进行排序,默认是升序,想要降序排序需要加:reverse=True ,reverse返转的意思
#sort本身只是一个方法,没有返回值,所以不能打印
#numbs = [12,425,334,32]
#numbs.sort()
#print numbs #打印结果:[12, 32, 334, 425]
#numbs.sort(reverse=True)
#print numbs #打印结果:[425, 334, 32, 12]
七、insert和extend的区别:
1.insert可以指定插入元素的位置,extend不能指定,只能合并到末尾
2.insert是在原列表的基础上增加元素,什么都可以加(列表、字符串……),extend只能合并2个列表,对列表进行扩展,不能添加字符串
八、元祖
1.元组的值,不能改变,是一个不可便的列表,可以通过访问下标和切片的方式查询,但是想要修改必须先转成list
#tup1 = ('physics', 'chemistry', 1997, 2000)  #定义元祖
#print tup1[1]   #打印结果:chemistry
#tup1[0] = 100   #这种修改方式是非法的
#tup2=list(tup1) #想要修改元祖,必须先将其转换成list才可以
#print tup2      #打印结果:['physics', 'chemistry', 1997, 2000]
#tup2[2] = '1989'
#print tup2           #打印结果:['physics', 'chemistry', 1989, 2000]
2.元祖只有count和index方法
names = ('mike','mark','candice','laular','mark','msr')
print(names.count('mark')) #打印结果:2
print(names.index('msr')) #打印结果:5