列表和元组的操作

 

 

 

列表

 

list(字符串) #可以转为列表,但是括号内不能是整形int,否则会报错

 

isinstance(list1,list) #list1这个地方是变量,后面list是变量类型,同理可以放入int、float、str、dict、set等,判断变量的类型正确为True,错误返回False

 

#增加

append('gg') 在列表的末尾加上'gg'

insert(0,'gg') 在列表的第0个位置加上'gg',之后的位置顺延

 

#删除

del 是直接删除,无法再用该元素

pop() 是弹出栈,括号中无数字则弹最后一个,可以继续使用弹出元素,如果有数字则删除对应元素

remove() 删除括号内的元素,在不知道该元素位置的时候使用,只删除一次,如果列表中有多个相同元素,需要使用循环来判断是否删除了所有的值

如果删除的值不存在,报错

ValueError: list.remove(x): x not in list

 

list1.clear() #清空整个列表里面的元素

 

set()函数是删除重复项

list1 = [1,2,2,'a','a']

print(set(list1)) #返回集合{1, 2,'a'},不是返回列表[1,2,'a']

 

#修改

list1[0] = "ABC" #直接改某个元素的值

 

#查询定位

list1 = ['@', '3', '2', '1', 'C', 'A', 'A', 'y', 'm']

print (len(list1)) #打印列表长度,9

print (list1[0:1]) #打印序号0-1的字符,即['@'],不含1,包头不包尾

print (list1.find("2",1,4)) #查询"2" 所在的序列,不能这么做,会报错

会报错AttributeError: 'list' object has no attribute 'find'

 

但是index可以

print (list1.index("2",1,4)) #返回2

index没找到,返回ValueError: 'A' is not in list

 

list1[1:6:2] 返回索引1到6的值,但是步长是2

list1[4:6]= 'alex li' 把4到6的元素改为alex li,不够的元素自动添加,alex li 会被逐个拆开为字母和空格的组合

['@', '3', '2', '1', 'a', 'l', 'e', 'x', ' ', 'l', 'i', 'A', 'y', 'm']

 

print (list1.count("dd")) #返回0,因为不存在

print (list1.count("A")) #返回2,因为出现2次

print (list1.count("A",0,5)) #会报错,在列表中不能指定范围,列表的count操作只有一个参数,字符串可以指定范围

TypeError: count() takes exactly one argument (3 given)

 

enumerate 枚举,将索引号和元素分别成对提取出来

for index,item in enumerate(item_list):

 

#排序

sort() 对列表永久排序,按ASC2的字母排序,区分大小写,大写在前,ABab

如果连续执行以下两行指令:

print (list1.sort()) #返回None,注意不返回排序结果

print (list1) #返回['1', '2', '3', '@', 'A', 'A', 'C', 'm', 'y']

 

sorted() 对列表永久排序,注意语法不一样

sorted(terable,key,reverse) #需要排序的列表放在括号内

sorted(iterable[, cmp[, key[, reverse]]])

参数说明:

  • iterable -- 可迭代对象。
  • cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)

 

sort (self,key,reverse) #用点连接,跟在需要排序的列表后面

如果连续执行以下两行指令:

print (sorted(list1)) #返回['1', '2', '3', '@', 'A', 'A', 'C', 'm', 'y']

print (list1) #返回['@', '3', '2', '1', 'C', 'A', 'A', 'y', 'm']

 

reverse() 反转列表元素的排列顺序,永久修改

 

#复制

列表的复制

new_list = old_list[:] #切片复制,创建了新的列表并逐一复制元素进去

如果是

new_list = old_list #指向复制,两个列表名称指向的是同一组列表元素

 

类似的做法

list2 = list1.copy()

 

#拼接

list1.extend(list2)

list2会跟在list1后面

 

#指定切片或分离

split() partition() 这些是操作字符串的函数,不能操作列表

使用具体的索引号来对列表进行切片即可

 

 

元组

元组是元素不可修改的列表

#增加#删除#排序#拼接

不可修改,就无法增加、删除某个元素

也无法排序,临时排序也不行

无法拼接两个元组

 

#修改

元组的修改简单粗暴直接给这个元组重新赋值

tuple1 = (20,30) #这是旧元组

tuple1 = (30.40) #这是新元组,继续用同一个名字

 

 

#查询定位

元组的查询定位基本与列表一致

tuple1 = ('@', '3', '2', '1', 'C', 'A', 'A', 'y', 'm')

print (len(tuple1)) #打印列表长度,9

print (tuple1[0:1]) #打印序号0-1的字符,即['@'],不含1,包头不包尾

不能用find函数(字符串专用),但是index可以

print (tuple1.index("2",1,4)) #返回2

index没找到,返回ValueError: tuple.index(x): x not in tuple

print (tuple1.count("dd")) #返回0,因为不存在

print (tuple1.count("A")) #返回2,因为出现2次

print (tuple1.count("A",0,5)) #会报错,在列表中不能指定范围,列表的count操作只有一个参数,字符串可以指定范围

TypeError: count() takes exactly one argument (3 given)

 

#复制

与列表的复制不同,原先表示指向复制的方法,可以用来复制元组

tuple2 = tuple1

不过一般不会这么用,因为元组不可变的,直接用tuple1元组即可

 

函数copy()只能用在列表里,不能用到元组上

否则会报错

AttributeError: 'tuple' object has no attribute 'copy'

 

 

#指定切片

使用具体的索引号来对元组进行切片即可

切片的括号还是[]

print (tuple1[0])

 

 

猜你喜欢

转载自www.cnblogs.com/welljoy/p/9188015.html