1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python之列表和元组的基本操作(超详细)

Python之列表和元组的基本操作(超详细)

时间:2023-04-16 05:51:41

相关推荐

Python之列表和元组的基本操作(超详细)

一、操作列表元素

列表中的元素是有序存放的,因此可以直接通过索引来访问列表元素。同时列表中的元素是可变的。即不仅列表中的元素值可以修改,列表中的元素个数也是可变的。因此列表中的元素支持修改、添加和删除操作。

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 guestsTrue>>> '小红' in guestsFalse>>> '小红' not in guestsTrue>>> >>> 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()方法是处理字符串的方法,用来根据指定的分隔符拆分字符串,并生成列表。

语法格式为:字符串.split(分隔符) #分隔符如果缺省的话,默认按照空格拆分字符串

>>> sentence = 'I want to be split by spcaes.'>>> name = '小阿丁,小红'>>> sentencelist = sentence.split()>>> sentencelist['I', 'want', 'to', 'be', 'split', 'by', 'spcaes.']>>> namelist = name.split(',')>>> namelist['小阿丁', '小红']

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。