Python列表的增删改查和元组

一、定义列表

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