一、操作列表元素
列表中的元素是有序存放的,因此可以直接通过索引来访问列表元素。同时列表中的元素是可变的。即不仅列表中的元素值可以修改,列表中的元素个数也是可变的。因此列表中的元素支持修改、添加和删除操作。
1.1 修改元素
格式:列表名【索引】= 新值
1.2 增加元素
1.2.1 append()方法
append()方法是列表专属的方法之一,用来在指定的列表尾部,即当前最后一个元素的后面,追加指定新元素。
语法格式:列表名.append(新元素)
1.2.2 insert()方法
insert()方法允许为新增加的元素指定插入的位置,其中位置用索引表示。
语法格式为:列表名.insert(索引,新元素)
>>> guests = ['张三','李四','王五','小阿丁']
>>> guests.insert(0,'小红')
>>> guests
['小红', '张三', '李四', '王五', '小阿丁']
>>> len(guests)
5
注意:列表每次增加的元素可以是任何类型的。
>>> play1 = ['小阿丁',18]
>>> play1
['小阿丁', 18]
>>> play1.append(20)
>>> play1
['小阿丁', 18, 20]
>>> play1.insert(0,'小红')
>>> play1
['小红', '小阿丁', 18, 20]
1.3 删除元素
1.3.1 del命令
语法格式:del 列表名【索引】
>>> guests
['小红', '张三', '李四', '王五', '小阿丁']
>>> del guests[0]
>>> guests
['张三', '李四', '王五', '小阿丁']
1.3.2 pop()方法
语法格式:列表名.pop(索引) #当缺省指定索引的时候,默认删除最后一个元素
>>> guests
['张三', '李四', '王五', '小阿丁']
>>> guests.pop(1)
'李四'
>>> guests
['张三', '王五', '小阿丁']
>>> guests.pop()
'小阿丁'
>>> guests.pop()
'王五'
可以看出pop()不仅删除了列表中指定元素,而且返回了被删除的指定元素,这可以供后续使用。
1.3.3 remove()方法
语法格式:列表名.remove(元素值)
>>> guests
['小红', '张三', '李四', '张三', '小阿丁']
>>> guests.remove('李四')
>>> guests
['小红', '张三', '张三', '小阿丁']
>>> guests.remove('张三')
>>> guests
['小红', '张三', '小阿丁']
可以看出,当列表中有相同值时,remove()方法删除的是列表中排在最前面的待删除的元素。
二、其他常用操作
2.1 常用函数
len() #统计和返回指定列表的长度
in() not in() #判断指定元素是否在列表中
index() #在列表中那个查找指定的元素,若存在则返回指定元素在列表中的索引,若存在多个则返回最小的,若不存在会报错
count() #统计并返回列表中指定元素的个数
>>> guests = ['张三','李四','王五','小阿丁']
>>> '小阿丁' in guests
True
>>> '小红' in guests
False
>>> '小红' not in guests
True
>>>
>>> len(guests)
4
>>> guests.index('小阿丁')
3
>>> guests.count('小阿丁')
1
>>> guests.count('小红')
0
2.2 操作列表函数
sort() #列表元素从小到大升序排序,改变了源列表的元素的顺序
sorted() #列表元素从小到大升序排序,生成排序后的副本,不改变原列表的顺序
注意:sort()方法排序是基于ord()函数得到的编码值进行的。对于数字和英文字符排序,结果是确定的,但是处理中文的时候就有些复杂,因为中文通常会有拼音和笔画两种排序方式,而不同的字符集或采用拼音排序,或采用笔画排序,或采用偏旁部首排序,或混合多种排序方式,从而使得sort()方法对中文的排序结果和预判结果发生偏差。至于如何解决,我会在后面给出。
同时sort()不仅可以升序也可以降序,但是需要增加一个参数,如下图:
sort()方法格式:列表.sort()
>>> nums = [9,3,8,2,1]
>>> nums.sort()
>>> nums
[1, 2, 3, 8, 9]
>>> nums.sort(reverse = True)
>>> nums
[9, 8, 3, 2, 1]
sorted()函数语法格式:sorted(列表,reverse)
>>> nums = [9,3,5,1,2,18]
>>> nums
[9, 3, 5, 1, 2, 18]
>>> sorted(nums,reverse = False)
[1, 2, 3, 5, 9, 18]
>>> sorted(nums,reverse = True)
[18, 9, 5, 3, 2, 1]
可以看出sorted()函数只生成排序后的列表副本,不改变原列表中元素的顺序。如果想保存排序后的列表,可以定义一个新的列表将其保存。
三、列表的扩充、复制和删除
3.1 列表的扩充
3.1.1 “+”运算
“+”运算可以将两个列表“加”起来,生成一个新的列表,但是原来的列表并没有发生变化。
>>> list1 = ['小红','小王','小兰']
>>> list1
['小红', '小王', '小兰']
>>> list2 = ['张三','李四','王五','小阿丁']
>>> list2
['张三', '李四', '王五', '小阿丁']
>>> list1 + list2
['小红', '小王', '小兰', '张三', '李四', '王五', '小阿丁']
>>> list1
['小红', '小王', '小兰']
>>> list2
['张三', '李四', '王五', '小阿丁']
3.1.2 extend() 方法
extend()方法不同于“+”方法,因为“+”必须通过赋值语句才能将结果写入新的列表中,而extend()方法可以直接将新的列表添加至原列表之后。
语法格式为:列表.extend(新列表)
>>> list1
['小红', '小王', '小兰']
>>> list2
['张三', '李四', '王五', '小阿丁']
>>> list1.extend(list2)
>>> list1
['小红', '小王', '小兰', '张三', '李四', '王五', '小阿丁']
>>> list2
['张三', '李四', '王五', '小阿丁']
3.1.3 “*”运算
列表的乘法运算是指将列表中的元素重复多遍。
语法格式:列表*n
>>> list2
['张三', '李四', '王五', '小阿丁']
>>> list2 * 3
['张三', '李四', '王五', '小阿丁', '张三', '李四', '王五', '小阿丁', '张三', '李四', '王五', '小阿丁']
3.2 列表的复制
3.2.1 copy() 方法
>>> list2
['张三', '李四', '王五', '小阿丁']
>>> listscopy = list2.copy()
>>> listscopy
['张三', '李四', '王五', '小阿丁']
3.2.2 列表之间的赋值
>>> list2
['张三', '李四', '王五', '小阿丁']
>>> list1 = list2
>>> list1
['张三', '李四', '王五', '小阿丁']
做到这,似乎这两种方法没有任何区别,都能实现列表的复制,那到底有什么区别呢?继续往下进行删除元素的尝试。
>>> list1
['张三', '李四', '王五', '小阿丁']
>>> list1copy = list1.copy()
>>> list1copy
['张三', '李四', '王五', '小阿丁']
>>> del list1copy[0]
>>> list1copy
['李四', '王五', '小阿丁']
>>> list1
['张三', '李四', '王五', '小阿丁']
通过copy()方法得到的新列表在执行删除一个元素的时候,该元素只是从复制的列表中删除,原列表并没有发生任何变化。
>>> list1
['张三', '李四', '王五', '小阿丁']
>>> list2 = list1
>>> list2
['张三', '李四', '王五', '小阿丁']
>>> del list2[0]
>>> list2
['李四', '王五', '小阿丁']
>>> list1
['李四', '王五', '小阿丁']
但是使用赋值得到的新列表在执行删除一个元素的时候,该元素不仅在复制列表中被删除,在原列表中也被删除。
这说明,列表的copy()方法会生成一个原列表的备份,并将该备份赋值给新列表,这被称为“深拷贝”。而直接的列表赋值,仅仅是让原列表多了一个新的名字,所谓的“新”列表和原列表共享原来的列表内容,这被称为“浅拷贝”。
3.2.3 列表的切片实现复制
倘若想复制列表的一部分,那就可以使用切片。
>>> list1
['李四', '王五', '小阿丁']
>>> list3 = list1[1:3]
>>> list3
['王五', '小阿丁']
这也是一种“深拷贝”,读者可以自己上机实验。
3.3 列表的删除
语法格式:del 列表名
注意del 也可以通过删除所有元素达到清空列表的作用,原列表仍保存,只不过是一个空列表。
>>> list2
['李四', '王五', '小阿丁']
>>> del list2[:]
>>> list2
[]
四、元组
特别注意:元组的元素是不能修改的,可以将元组理解为“不能修改的列表”。
元组是一种特殊的列表,很多特性和列表相似。
4.1 转换函数
4.1.1 元组与列表之间的转换
tuple()函数用来将列表转换为元组,list()函数用来将元组转换为列表。
>>> tup1 = ("小阿丁","女",18)
>>> tup1
('小阿丁', '女', 18)
>>> list1 = list(tup1)
>>> list1
['小阿丁', '女', 18]
>>> list2 = ['小阿丁','女',20]
>>> list2
['小阿丁', '女', 20]
>>> tup2 = tuple(list2)
>>> tup2
('小阿丁', '女', 20)
4.1.2 字符串与列表之间的转换
>>> name = '小阿丁,小红'
>>> list1 = list(name)
>>> list1
['小', '阿', '丁', ',', '小', '红']
4.1.3 split()方法
split()方法是处理字符串的方法,用来根据指定的分隔符拆分字符串,并生成列表。文章来源:https://www.toymoban.com/news/detail-441830.html
语法格式为:字符串.split(分隔符) #分隔符如果缺省的话,默认按照空格拆分字符串文章来源地址https://www.toymoban.com/news/detail-441830.html
>>> sentence = 'I want to be split by spcaes.'
>>> name = '小阿丁,小红'
>>> sentencelist = sentence.split()
>>> sentencelist
['I', 'want', 'to', 'be', 'split', 'by', 'spcaes.']
>>> namelist = name.split(',')
>>> namelist
['小阿丁', '小红']
到了这里,关于Python之列表和元组的基本操作(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!