列表和元组的操作
Posted welljoy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表和元组的操作相关的知识,希望对你有一定的参考价值。
列表
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])
以上是关于列表和元组的操作的主要内容,如果未能解决你的问题,请参考以下文章