第四章 列表

1.【直接创建列表】 []

语法参考

在Python中,可以直接通过中括号“[]”创建列表,创建列表时,在中括号的内容放置由逗号分隔的元素。其语法格式如下:

listname = [element1,element2,element3,,elementn]

参数说明:

  • listname表示列表的名称,可以是任何符合Python命名规则的标识符。

  • element 1、element 2、element 3、element n:表示列表中的元素,个数没有限制,并且只要是Python支持的数据类型就可以。

锦囊1 通过“=”符号定义列表

通过“=”符号定义多种列表,示例代码如下:

num = [7,14,21,28,35,42,49,56,63]                               # 定义数值型列表
verse = ['埃及金字塔','巴比伦空中花园','宙斯神像','亚历山大灯塔']    	# 定义字符型列表
python = ['优雅',"明确",'''简单''' ]                             	# 定义注释字符型列表

print('num列表内容为:',num)
print('verse列表内容为:',verse)
print('python列表内容为:',python)

锦囊2 通过“=”符号定义二维列表

通过“=”符号定义二维列表,示例代码如下:

# 定义二维列表
untitle = ['Python',28,'人生苦短,我用Python',['爬虫','自动化运维','云计算','Web开发']]
print('untitle列表内容为:',untitle)

2. 【添加列表元素】append()方法

语法参考

列表对象的append()方法,是用于向列表的末尾追加元素。其语法格式如下:

listname.append(obj)

参数说明:

  • listname:表示要添加元素的列表名称。

  • obj:表示要添加到列表末尾的对象。

锦囊1 向列表中添加指定元素

定义一个包括5个元素的列表,然后应用append()方法向该列表的末尾再添加一个元素,示例代码如下:

building = ['醉翁亭','放鹤亭','喜雨亭','陶然亭','爱晚亭']  		# 原列表
print('原列表:', building)                              	# 打印原列表
building.append('湖心亭')                                   	# 向列表的末尾添加元素
print('添加元素后的列表:', building)                      	# 打印添加元素后的列表

锦囊2 向列表中添加类型不同的元素

append()方法向列表末尾添加的元素类型可以与原列表中的元素类型不同。示例代码如下:

building = ['刀','枪','剑','戟']
print('原列表:', building)

building.append(['scoop', 50])  				# 向列表中添加列表类型的元素
print('添加列表类型元素后的新列表:', building)

building.append((100, 200))     				# 向列表中添加元组类型的元素
print('添加元组类型元素后的新列表:', building)

building.append(9)              				# 向列表中添加数值类型的元素
print('添加数值类型元素后的新列表:', building)

锦囊3 将txt文件中的信息添加至列表中

首先需要以读取文件的方式打开目标文件,然后循环遍历文件中每行内容,再将每行内容添加至指定的列表中。示例代码如下:

result = []     								# 保存txt每行数据
print('txt文件内信息如下:')

# 以读取模式打开txt文件
with open('user-name.txt','r') as f:
    for line in f:      						# 循环遍历每行信息
        print(line.strip('\n'))
        result.append(line.strip('\n'))    		# 将txt文件中每行信息添加至列表中
print('提取后的信息为:',result)            		# 打印提取后的信息

3. 【删除列表中的所有元素】clear()方法

语法参考

使用clear()方法可以删除列表中的所有元素。其语法格式如下:

listname.clear()

锦囊1 清空列表中所有元素

创建一个列表,内容为水中的鱼类,然后应用列表对象的clear()方法清空列表中的所有元素,示例代码如下:

# 原列表
fish = ['鲸鱼', '鲨鱼', '刀鱼', '鲶鱼', '剑鱼', '章鱼', '鱿鱼', '鲤鱼']    	
print('清空前的列表:', fish)

# 清空列表中的所有元素
fish.clear()   
print('清空后的列表:', fish)

锦囊2 清空二维列表中所有元素

创建一个二维列表,然后应用列表对象的clear()方法清空二维列表中的所有元素,示例代码如下:

# 定义二维列表
untitle = ['Python',28,'人生苦短,我用Python',['爬虫','自动化运维','云计算','Web开发']]
print('清空前的二维列表:',untitle)

# 清空二维列表
untitle.clear()                    
print('清空后的二维列表:',untitle)

锦囊3 清空二维列表中的子列表

创建一个二维列表,然后通过列表索引的方式指定子列表的位置,再通过clear()方法清空子列表中的所有元素,示例代码如下:

untitle = ['Python',28,'人生苦短,我用Python',['爬虫','自动化运维','云计算','Web开发']]
print('清空前的二维列表:',untitle)

# 清空子列表中的所有元素
untitle[3].clear()   
print('清空后的二维列表:',untitle)

锦囊4 清空二维列表中与目标列表相同的子列表

循环遍历二维列表,比较子列表是否与目标列表相同,如果相同就将对应的子列表清空。代码如下:

two_lst = [[1, 2, 3], ['1', '2', '3'], [1, 2, 3]]  	# 二维列表
target_list = [1,2,3]                              	# 目标列表
for i in two_lst:
    if i ==target_list:  							# 如果二维列表中子列表与目标列表相同
        i.clear()        							# 清空二维列表中子列表
print('清空后的二维列表:',two_lst)

4. 【复制列表中所有元素】copy()方法

语法参考

在Python中,提供了copy()方法,使用该方法可以复制某一列表中的所有元素并生成一个新列表。其语法格式如下:

listname.copy()

锦囊1 将原列表中的所有元素复制到新列表中

定义一个保存影视类奖项名称的列表,然后应用copy()方法列表中的所有元素复制到新列表中,示例代码如下:

old = ['金鹰奖','百花奖','飞天奖','白玉兰奖','华表奖','金鸡奖']       	# 原列表
print('原列表:', old)

new = old.copy()      												# 将原列表的所有元素复制到新列表中
print('新列表:', new)

锦囊2 混合类型的列表元素复制到新的列表当中

对于混合类型的列表,也可以应用copy()方法列表中的所有元素复制到新列表中,示例代码如下:

old = ['great',54345,['?',68],(21,'加油'),'努力']      		# 原列表
print('原列表:', old)

new = old.copy()                                          	# 将原列表的所有元素复制到新列表中
print('新列表:', new)

注意:copy()和直接赋值的区别:使用“=”直接赋值,是引用赋值,更改一个,另一个同样会变。copy()复制一个副本,原值和新复制的变量互不影响。

5. 【获取指定元素出现的次数】count()方法

语法参考

使用列表对象的count()方法可以获取指定元素在列表中出现的次数。其语法格式如下:

listname.count(obj)

参数说明:

  • listname:表示列表的名称。

  • obj:表示要获取的对象。

  • 返回值:元素在列表中出现的次数。

锦囊1 判断列表中指定元素出现的次数

创建一个列表,应用列表对象的count()方法判断元素“乒乓球”出现的次数,示例代码如下:

play = ['乒乓球','跳水','女排','举重','射击','体操','乒乓球']      	# 原列表
num = play.count('乒乓球')       								# 用count()方法获得列表中“乒乓球”出现的次数,结果赋给num

print('乒乓球出现的次数为:', num)

锦囊2 判断混合类型列表中指定元素出现的次数

如果是混合类型的列表[99,[‘刘备’,99,‘袁绍’],(99,‘孙权’,‘刘表’),‘曹操’,99],应用列表对象的count()方法判断“99”元素出现的次数时,将只统计列表中数字类型的元素,出现在列表类型元素或元组类型元素里的“99”将不被计数。示例代码如下:

monkey = [99,['刘备',99,'袁绍'],(99,'孙权','刘表'),'曹操',99]     	# 原列表
num = monkey.count(99)        									# 用count()方法获得列表中“99”出现的次数,结果赋给num

print('99出现的次数为:', num)

锦囊3 判断二维列表中指定元素出现的次数

创建一个二维列表作为数据,然后循环遍历列表中的元素并判断列表中是否包含list类型数据,如果包含则获取该列表中指定元素出现的次数,最后统计指定元素出现的总次数即可。示例代码如下:

# 某公司迟到点名数据
two_list = ['小赵','老钱','老孙','小李',['小赵','老周','老孙','小王'],['老吴','老吴','小冯','小赵']]
count = 0           				# 叠加列表元素出现的次数
goal = '小赵'       					# 需要查找的元素

for i in two_list: 					# 循环遍历列表元素
    if type(i) == list:  			# 判断列表中元素是否还有列表
        count+=i.count(goal) 		# 如果有列表则获取该列表中指定元素出现的次数

# 最后打印整个二维列表中指定元素出现的次数
print(goal,'元素在二维列表中出现了',two_list.count(goal)+count,'次!')

锦囊4 获取列表中不同类型元素出现的次数

创建一个包含不同类型元素的列表,然后通过count()方法获取对应类型元素出现的次数。代码如下:

ranking_list = [{1:'Java'},[2,'C'],(3,'Python'),{1:'Java'}]  	# 多类型元素的列表
print(ranking_list.count(ranking_list[0]))                   	# 获取列表中指定元素的数量
print(ranking_list.count({1:'Java'}))                        	# 获取列表中指定字典数据的数量
print(ranking_list.count([2,'C']))                           	# 获取列表中指定列表数据的数量
print(ranking_list.count((3,'Python')))                      	# 获取列表中指定元组数据的数量

6. 【删除列表】del保留字

语法参考

对于已经创建的列表,不再使用时,可以使用del保留字将其删除,也可以通过del保留字删除列表中指定元素。其语法格式如下:

del listname[index]

参数说明:

  • listname:表示列表的名称。

  • [index]:删除列表指定元素时需要使用该参数,用于指定列表中元素的索引值,必须是整数。

说明:del语句在实际开发时,并不常用。因为Python自带的垃圾回收机制会自动销毁不用的列表,所以即使我们不手动将其删除,Python也会自动将其回收。

锦囊1 删除指定名称的列表

定义一个名称为team的列表,然后再应用del保留字将其删除,示例代码如下:

team = ['上海申花','山东鲁能','北京国安','广州恒大']   		# 定义team列表
print('删除前的列表内容为:',team)                     	# 打印删除前列表内容

del team                                               	# 删除team列表
print('打印删除后的列表名称:',team)               		# 打印删除后的列表对象

说明:由于team列表已经被删除,所以再次打印team列表内容时将出现错误信息。

锦囊2 删除列表中指定索引元素

定义一个名称为poem的列表,然后再应用del保留字删除其中的一个元素。示例代码如下:

poem = ['蝶恋花','忆秦娥','贺新郎','念奴娇','沁园春','定风波']
print('原列表:', poem)

del  poem[2]   											# 删除team中的第3个元素
print('删除后:', poem)

说明:使用del保留字删除列表元素时,如果index不写,即列表名称后的[]中无内容,程序运行时将出现错误。

锦囊3 删除用户输入的列表元素

创建一个只包含两个元素的列表,然后判断列表当中是否存在用户输入的字符元素,如果存在就获取用户输入字符元素所在列表中的索引,最后通过获取的索引删除对应的列表元素即可!示例代码如下:

nba_list = ['勇士','猛龙']    							# NBA决赛的两支球队
nba_name = input('您认为将被淘汰的那支球队是?')

if nba_name in nba_list:      							# 判断列表中是否包含用户输入的元素
    del nba_list[nba_list.index(nba_name)]  			# 删除列表中用户输入的球队
    if nba_list[0]=='猛龙':                 				# 如果列表中剩下的元素是猛龙
        print('恭喜您!猛龙队最终获得了NBA的总冠军!')
    else:
        print('您猜错了!勇士队输掉了这次比赛!')
else:
    print('NBA决赛中并没有这支球队!')

7. 【遍历列表】enumerate()函数

语法参考

enumerate()函数将一个可迭代的对象组合为一个带有数据和数据下标的索引序列,返回一个枚举对象,enumerate()函数多用在for循环中,用于遍历序列中的元素以及它们的下标。其语法格式如下:

enumerate(iterable, start=0)

参数说明:

  • iterable:一个序列、迭代器或其他支持迭代的对象,如列表、元组、字符串等;

  • start:下标的起始值,默认从0开始;

返回值:返回一个enumerate(枚举)对象。

锦囊1 遍历enumerate对象

enumerate()函数是将一个可迭代的对象组合为一个带有数据和数据的索引序列,返回一个枚举对象。例如,定义一个保存中国古典文学中四大名著的列表,然后通过for循环和enumerate()函数遍历该列表,并输出索引和四大名著的名称,示例代码如下:

print('中国古典文学中四大名著:')
team = ['《三国演义》','《水浒传》','《西游记》','《红楼梦》']

for index,item in enumerate(team):       	# 遍历索引与四大名著的名称
    print(index + 1,item)                  	# 打印索引与四大名著的名称

锦囊2 将enumerate对象转换为列表

定义一个元组,使用enumerate()函数根据定义的元组创建一个enumerate对象,并使用list()函数将其转换为列表,示例代码如下:

num = ('one','two','three','four')  	# 创建元组数据

print(enumerate(num))               	# 返回一个enumerate对象
print(list(enumerate(num)))         	# 使用list()函数转换为列表,下标的起始值默认从0开始
print(list(enumerate(num,2)))       	# 设置下标的起始值从2开始

锦囊3 通过enumerate()函数合并列表索引

定义两个列表,通过enumerate()函数将其组成索引序列,最后合成一个列表,并且实现下标的连续性。示例代码如下:

list1 = ['python', 'java', 'asp.net', 'c++','vb']  	# 创建列表list1
list2 = ['sqlserver','oracle','mysql','mongodb']   	# 创建列表list2

en1 = enumerate(list1)                             	# 创建list1列表的enumerate对象
en2 = enumerate(list2,start=5)                    	# 创建list2列表的enumerate对象,下标以5开始

resultList = list(en1) + list(en2)               	# 将两个enumerate对象转换为列表,并合为一个列表
print('合并后的列表内容为:\n',resultList)          	# 打印合并后的列表内容

锦囊4 循环遍历序列中的元素及下标

enumerate()函数多用在for循环中,用于遍历序列中的元素以及它们的下标。使用for循环和enumerate()函数实现同时输出索引值和元素内容的功能,其语法格式如下:

# 输出index和item
for index,item in enumerate(listname):

参数说明:

  • index:用于保存元素的索引;

  • item:用于保存获取到的元素值,要输出元素内容时,直接输出该变量即可;

  • listname:序列名称。

通过enumerate()函数,循环遍历序列中的元素及下标。示例代码如下:

list3=['Forever', 'I Need You', 'Alone', 'Hello']   	# 列表数据
for index,item in enumerate(list3):                		# 循环遍历列表中的元素及下标
    print('列表元素下标为:',index,'列表元素为:',item)

8. 【将序列的全部元素添加到另一列表中】extend()方法

语法参考

extend()方法是向列表中添加一个元素,而extend()方法可以实现将一个序列中的全部元素添加到列表中。其语法格式如下:

listname.extend(seq)

参数说明:

  • listname:表示要添加元素的列表名称。

  • seq:表示要被添加的序列。语句执行后,seq的内容将追加到listname的后面。

锦囊1 将序列中的全部元素添加至列表

定义一个包括2个元素的,名为color的列表,然后应用extend()方法将另外3个序列中的元素添加到color列表的末尾,示例代码如下:

color = ['红','橙']        		# 定义原列表
print('原列表:', color)

color.extend(['黄','绿'])    	# 将列表['黄','绿']中的元素全部添加到color的末尾
print('添加列表元素:', color)

color.extend(('青','蓝'))    	# 将元组('青','蓝')中的元素全部添加到color的末尾
print('添加元组元素:', color)

color.extend('紫黑白')       	# 将字符串'紫黑白'中的元素全部添加到color的末尾
print('添加字符串元素:', color)

锦囊2 向列表中添加混合类型的序列

通过extend()方法向列表末尾添加混合类型的序列。示例代码如下:

building = ['滕王阁','蓬莱阁','天心阁','天一阁']   # 定义原列表
print('原列表:', building)

# 将列表['tall',(6,9),['?','!'],300]中的全部元素添加到building的末尾
building.extend(['tall',(6,9),['?','!'],300])
print('新列表:', building)

说明:如果通过extend()方法向列表中添加字典数据时,在默认情况下只会将字典中的key值添加至列表当中。

锦囊3 将二维列表转换为一维列表

便利二维列表中的子列表,然后将子列表中的元素添加至一维列表当中,代码如下:

two_list = [[1,2],[3,4],[5,6],[7,8]]     # 创建二维列表
one_list = []                            # 一维列表

for i in two_list:                       # 便利二维列表中的元素
    one_list.extend(i)                   # 将二维列表中子列表内的元素添加值一维列表内
print(one_list)                          # 打印一维列表

锦囊4 将同时包含一维和二维的列表转换为一维列表

在一个二维列表中,既有普通的数值类型元素,也有列表元素,现在需要将该二维列表转化为一维列表,代码如下:

def spread(arg):

    ret = []
    for i in arg:
        if isinstance(i, list):  		# 如果元素是列表,则使用extend方法将每个元素添加到列表
            ret.extend(i)
        else:                    		# 如果元素不是列表,则使用append方法追加到原列表
            ret.append(i)
    return ret                   		# 返回一维列表

print(spread([1,2,3,[4,5,6],[7],8,9]))

9. 【获取指定元素首次出现的索引】index()方法

语法参考

使用列表对象的index()方法可以获取指定元素在列表中首次出现的位置(即索引)。其语法格式如下:

listname.index(obj)

参数说明:

  • listname:表示列表的名称。

  • obj:表示要查找的对象。

  • 返回值:首次出现的索引值,如果没有找到将抛出异常。

锦囊1 判断指定元素首次出现的位置

创建一个列表,然后应用列表对象的index()方法判断元素“纳达尔”首次出现的位置,示例代码如下:

# 原列表
champion = ['费德勒','德约科维奇','纳达尔','穆雷','瓦林卡','西里奇']   

# 用index()方法获得列表中“纳达尔”首次出现的位置的索引,结果赋给position
position = champion.index('纳达尔')
print('纳达尔首次出现的位置的索引为:', position)

锦囊2 判断混合型列表中指定元素出现的位置

创建一个混合类型元素的列表,然后应用列表对象的index()方法判断指定元素出现的位置,示例代码如下:

# 原列表
city = ['杭州',('扬州',4,'苏州'),[16,'株洲','徐州'],32,'郑州']   

# 用index()方法获得列表中指定元素首次出现的位置的索引,结果赋给position
position = city.index(('扬州',4,'苏州'))
print('指定元素首次出现位置的索引为:', position)

说明:如果是混合类型的列表,应用列表对象的index()方法判断元素"苏州"首次出现的位置时,将只判断列表中字符串类型的元素,出现在元组类型元素里的"苏州"将不被判断。

锦囊3 使用del关键字删除指定索引的元素

在使用del关键字删除列表中的指定元素时,需要设置删除元素所对应的索引。当用户给出了指定的元素时,就需要通过index()方法先获取指定元素的索引,然后再使用del关键字删除这个元素。示例代码如下:

goal = '宙斯神像'       												# 需要删除的元素
verse = ['埃及金字塔','巴比伦空中花园','宙斯神像','亚历山大灯塔']      	# 定义字符型列表
del verse[verse.index(goal)]                         				# 删除指定索引的元素
print('删除指定元素的列表为:',verse)

10. 【向列表的指定位置插入元素】insert()方法

语法参考

如果想要向列表的指定位置插入元素,可以使用列表对象的insert()方法实现。其语法格式如下:

listname.insert(index,obj)

参数说明:

  • listname:表示原列表。

  • index:表示对象obj需要插入的索引值。

  • obj:表示要插入列表中的对象。

锦囊1 向列表的指定位置添加元素

定义一个包括5个元素的列表,然后应用insert()方法向该列表的第2个位置处添加一个元素,示例代码如下:

building = ['北京','长安','洛阳','金陵','汴梁']    	# 定义原列表
print('原列表:', building)
building.insert(1, '杭州')                         	# 向原列表的第2个位置处添加元素
print('新列表:', building)

锦囊2 向原列表中添加类型不同的元素

insert ()方法向列表中添加的元素类型可以与原列表中的元素类型不同,示例代码如下:

building = ['二锅头','五粮春','茅台','红花郎','老村长']   	# 原列表
print('原列表:', building)

building.insert(0, 4000)                 				# 向原列表的第1个位置处添加数字类型的元素
print('添加数字类型元素的新列表:', building, '\n')

building = ['二锅头','五粮春','茅台','红花郎','老村长']   	# 原列表
print('原列表:', building)

building.insert(1, [70,'四特东方韵'])   					# 向原列表的第2个位置处添加列表类型的元素
print('添加列表类型元素的新列表:', building, '\n')

building = ['二锅头','五粮春','茅台','红花郎','老村长']   	# 原列表
print('原列表:', building)

building.insert(2, ('沱牌舍得酒', 800)) 					# 向原列表的第3个位置处添加元组类型的元素
print('添加元组类型元素的新列表:', building)

锦囊3 append()方法与insert()方法的区别

  • 列表中的append()方法用于实现向列表的末尾添加元素

  • 列表中的insert()方法用于向列表的指定位置插入元素

11. 【创建列表】list()函数

语法参考

list()函数用于将序列转换成列表类型并返回一个数据列表,其语法格式如下:

list(seq)

参数说明:

  • seq:表示可以转换为列表的数据,其类型可以是range对象、字符串、列表、元组、字典或者其他可迭代类型的数据;

  • 返回值:列表。

list()函数可以传入一个可迭代对象,如字符串、元组、列表、range对象等,结果将返回可迭代对象中元素组成的列表。list()函数也可以不传入任何参数,结果返回一个空列表。

锦囊1 创建列表

例如通过range对象直接创建一个列表,示例代码如下:

range_list=list(range(10, 20, 2))          				# 通过range对象创建列表
print('通过range对象创建的列表内容为:',range_list)

使用list()函数时,不仅能通过range对象创建列表,还可以通过其他对象创建列表。示例代码如下:

print(list())                    		# 不传入参数,创建一个空列表
print(list('一二三四'))                	# 将字符串转换为列表
print(list(('壹', '贰', '叁', '肆')))  	# 将元组转换为列表
print(list(['Ⅰ', 'Ⅱ', 'Ⅲ', 'Ⅳ']))  	# 参数为列表则原样输出

通过list()函数,根据传入的参数创建一个新的列表,示例代码如下:

print(list())                           						# 不传入参数,创建一个空列表
print(list('Python'))                  							# 将字符串转换为列表
print(list(('a','b','c','d')))        							# 将元组转换为列表
print(list(['Forever', 'I Need You', 'Alone', 'Hello']))     	# 参数为列表则原样输出
print(list(range(1,11)))               							# 将range对象转换为列表

提示:如果list()函数的参数为列表,将会原样返回。

锦囊2 将字典转换为列表

使用list()函数将字典转换为列表,示例代码如下:

dictionary = {'Python':98,'Java':80,'C语言':75}   	# 定义字典
print(list(dictionary))                  			# 使用list()函数转换为列表

提示:list()函数的参数为字典时,会返回字典的key组成的列表。如果需要将字典中的values()转换为列表时可以使用如下代码:

print(list(dictionary.values()))         			# 将字典中values转换为列表

12. 【查找列表元素是否不存在】not in

语法参考

not in是not和in两个保留字的组合,主要用于判断特定的值在列表中不存在时返回True,否则返回False。其语法格式如下:

if 'A' not in list:

参数说明:

  • 'A’表示需要在列表中查找的元素值。

  • list表示查找目标的列表名称。

  • 返回值:在列表中未找到对应的元素将返回True,否则范围False。

锦囊1 查看列表中是否不包含指定数值

定义一个数值列表,然后使用not in语句判断数值列表中是否不包含某个数值,示例代码如下:

list2 = [1,2,3,4,5,6,7,8,9]              	# 定义数值列表
if 0 not in list2:                      	# 判断列表中是否不包含数值0
    print('判断结果为:',0 not in list2) 	# 打印判断结果

锦囊2 查看二维列表中是否不包含指定元素

定义一个二维列表,然后使用not in语句判断二维列表中是否不包含某个元素,示例代码如下:

# 定义二维列表
untitle = ['Python',28,'人生苦短,我用Python',['爬虫','自动化运维','云计算','Web开发']]

find1='python'
find2 = 28

print('列表中是否不含有“python”元素:',find1 not in untitle)
print('列表中是否不含有“28”元素:',find2 not in untitle)

13. 【删除列表中的元素】pop()方法

语法参考

在列表中,可以使用pop()方法删除列表中的一个元素(默认最后一个元素)。其语法格式如下:

listname.pop(index)

参数说明:

  • listname:表示列表的名称。

  • index:列表中元素的索引值,必须是整数;如果不写,默认index = -1。

  • 返回值:被删除的元素的值。

锦囊1 删除列表中最后一个元素

定义一个保存8个元素的列表,删除最后一个元素,示例代码如下:

city = ['里约热内卢','伦敦','北京','雅典','悉尼','亚特兰大','巴塞罗那','首尔'] # 原列表
delete = city.pop()       # 删除列表的最后一个元素

print('删除的元素:', delete)
print('删除最后一个元素后的列表:', city)

锦囊2 删除列表中指定元素

定义一个保存4个元素的列表,删除第2个元素,示例代码如下:

building = ['岳阳楼','黄鹤楼','鹳雀楼','望湖楼'] 		# 原列表
delete = building.pop(1)     						# 删除列表的第2个元素,将删除的元素返回给delete

print('删除的元素:', delete)
print('删除第2个元素后的列表:', building)

提示:pop(index)括号中的index参数是可选的,index是列表中元素的索引值,pop(index)表示删除索引为index的元素,并将删除元素作为返回值。

锦囊3 以负数作为索引删除列表元素

上述列表如果想删除第1个元素,也可以将参数以负数的形式进行设置,示例代码如下:

building = ['岳阳楼','黄鹤楼','鹳雀楼','望湖楼'] 		# 原列表
delete = building.pop(-4)     						# 删除列表的第1个元素,将删除的元素返回给delete

print('删除的元素:', delete)
print('删除第1个元素后的列表:', building)

注意:如果pop(index)方法括号中的数字大于或等于列表中元素的个数时,将出现错。同样如果pop(index)方法括号中的数字为负数,且绝对值大于列表中元素的个数,也将出现此类错误。

锦囊4 通过列表保存随机删除的那些元素

创建两个列表,一个是列表数据,另一个用于保存已经删除的列表元素。然后随机删除列表数据中的三个元素并将删除的元素保存起来。示例代码如下:

import random                                  		# 导入随机模块
ranking =['Java', 'C', 'Python', 'C++', 'C#']   	# 编程语言排行数据
delete_list = []                                	# 保存已经删除的列表元素

for i in range(3):                             		# 循环3次
    index = random.randint(0,len(ranking))      	# 随机生成需要删除元素的索引值
    delete_in = ranking.pop(index)              	# 随机删除元素
    delete_list.append(delete_in)               	# 将已经删除的元素保存到列表中

print('保存随机删除的元素列表为:',delete_list)

14. 【输出列表内容】print()函数

语法参考

print()函数的语法格式如下:

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

参数说明:

  • value:表示要输出的值;可以是数字、字符串、各种类型的变量等;

  • …:值列表,表示可以一次性打印多个值;输出多个值时,需要使用“,”(英文半角的逗号)分隔,打印出来各个值之间默认用空格隔开;

  • sep:表示打印值时,各个值之间的间隔符,默认值是一个空格,可以设置为其他的分隔符;

  • end:表示打印完最后一个值需要添加的字符串,用来设定输出语句以什么结尾,默认是换行符“\n”,即打印完会跳到新行,可以换成其他字符串,如end=‘\t’ 或end=’ '等,以实现不换行输出;

提示:sep和end的参数必须是字符串;或者为None,为None时意味着使用其默认值。

  • file:表示输出的目标对象,可以是文件也可以是数据流,默认是sys.stdout。可以设置“file = 文件储存对象”,把内容存到该文件中;

  • flush:表示是否立刻将输出语句输出到目标对象,flush值为False或者True,默认flush=False,表示输出值会保存在缓存中;当flush=True时,输出值强制写入文件。

注意:sep、end、file、flush都必须以命名参数方式传参,否则会被当作需要输出的对象。

提示:如果print()函数不传递任何参数,将会输出end参数的默认值,即打印一个空行。

锦囊01 输出列表内容

在Python中,如果想将列表的内容输出也比较简单,可以直接使用print()函数。例如,要想打印上面列表中的untitle列表,则可以使用下面的代码:

untitle = ['Python',28,'人生苦短,我用Python']
print(untitle)

锦囊02 对齐输出数据

对齐数据可以使用rjust、ljust和center来实现。也可以使用格式化函数format()实现,下面通过代码和注释来实现。

car=[ [1,"奔驰",489163],[2,"宝马",455051] ,[3,"奥迪",445300]]

for item in car:                                          	# 循环读取列表数据
    tup='{0:0>3}\t{1:*^12}\t{2:$>12.2f}'                	# 设置对其格式和占位符
    print(tup.format(item[0],item[1],float(item[2])))  		# 输出数据未设置格式

15. 【删除列表中的指定元素】remove()方法

语法参考

使用remove()方法可以删除列表中的指定元素。其语法格式如下:

listname.remove(obj)

参数说明:

  • listname:表示列表的名称。

  • obj:表示列表中要移除的对象,这里只能进行精确匹配,即不能是元素值的一部分。

锦囊1 删除列表中的指定元素

创建一个列表,然后应用列表对象的remove()方法删除列表中指定的元素,示例代码如下:

# 原列表
movie=[9, ('疯狂原始人','功夫熊猫',9), ['海底总动员',9,'超能陆战队'], 9, '里约大冒险']
print('删除前的列表:', movie)

movie.remove(9)                              		# 删除列表中的9
print('删除后的列表:', movie)

movie.remove(('疯狂原始人','功夫熊猫',9))      		# 删除列表中的('疯狂原始人','功夫熊猫',9)
print('删除后的列表:', movie)

说明:在以上示例中,列表中含有两个数值元素9,在使用remove()方法删除元素时会默认删除一次出现的数值元素9。

锦囊2 删除数值列表中的指定数值

创建一个数值列表,然后应用列表对象的remove()方法删除列表中指定的数值元素,示例代码如下:

int_list = [1,3,5,0,4,4,1,7,9,9,6]    		# 模拟手机号码
print('删除前的列表:',int_list)

int_list.remove(1)                    		# 删除数值元素1
print('删除后的列表:',int_list)

锦囊3 通过for循环删除列表中指定类型的元素

创建一个包含多种类型元素的列表,然后循环遍历列表中的每个元素,如果元素类型为指定的元素类型,即可通过remove()方法删除当前元素即可。示例代码如下:

a_list = ['a', 123, 12.1, -1]  				# 创建多类型元素的列表

for i in a_list:              				# 循环遍历列表中的元素
    if type(i)==str:          				# 判断元素的类型是否为字符类型
        a_list.remove(i)      				# 是字符类型将当前元素在列表中移除
print('移除字符类型元素后的列表:',a_list)   	# 打印移除字符类型元素后的列表

锦囊4 通过for循环删除列表中指定索引范围的元素

创建一个数值列表,循环遍历指定索引范围的列表对象,然后删除索引对应的元素值。示例代码如下:

number_list = [0,1,2,3,4,5,6,7,8,9]        	# 数值列表

# 循环删除列表索引为0~5所对应的元素
for i in number_list[0:6]:
    number_list.remove(i)

print('删除元素后的列表为:',number_list)

锦囊5 del保留字、pop()方法、remove()方法的区别

  • del保留字可以实现删除整个列表对象,而pop()方法与remove()方法无法实现。

  • del保留字与pop()方法在删除指定元素时需要通过指定元素索引,而remove()方法需要指定元素值对象。

  • pop()方法在删除元素时可以返回当前删除的元素值,而del保留字与remove()方法无法实现。

16. 【反转列表中的所有元素】reverse()方法

语法参考

列表对象提供了reverse()方法,使用该方法可以将列表中的所有元素进行反转。其语法格式如下:

listname.reverse()

锦囊1 字符列表中的所有元素反转

定义一个含有5个元素的列表,然后应用reverse()方法将原列表中的所有元素反转,示例代码如下:

num = ['一','二','三','四','五']
print('原列表:', num)

num.reverse()             				# 反转列表中的所有元素
print('新列表:', num)

锦囊2 符合类型的列表中所有元素反转

对于混合类型的列表,也可以应用reverse()方法将原列表中的所有元素反转,示例代码如下:

num = [1,'二',['Ⅲ',4],(5,'⑥')]
print('原列表:', num)

num.reverse()          					# 反转列表中的所有元素
print('新列表:', num)

17. 【排序列表元素】sort()方法

语法参考

列表对象中提供了sort()方法,该方法用于对原列表中的元素进行排序,排序后原列表中的元素顺序将发生改变。其语法格式如下:

listname.sort(key=None, reverse=False)

参数说明:

  • listname:表示要进行排序的列表。

  • key:表示指定一个从每个列表元素中提取一个用于比较的键(例如,设置“key=str.lower”表示在排序时不区分字母大小写)。

  • reverse:可选参数,如果将其值指定为True,则表示降序排列,如果为False,则表示升序排列。默认为升序排列。

锦囊1 数值列表的排序

定义一个保存10名学生Python理论成绩的列表,然后应用sort()方法对其进行排序,示例代码如下:

grade = [98,99,97,100,100,96,94,89,95,100]     		# 10名学生Python理论成绩列表
print('原列表:',grade)

grade.sort()                                  		# 进行升序排列
print('升 序:',grade)

grade.sort(reverse=True)                         	# 进行降序排列
print('降 序:',grade)

锦囊2 字符串列表的排序

使用sort()方法对字符串列表进行排序时,采用的规则是先对大写字母排序,然后再对小写字母排序。如果想要对字符串列表进行排序(不区分大小写时),需要指定其key参数。例如,定义一个保存英文字符串的列表,然后应用sort()方法对其进行升序排列,示例代码如下:

char = ['cat','Tom','Angela','pet']   		# 原列表
char.sort()                   				# 默认区分字母大小写
print('区分字母大小写:',char)

char.sort(key=str.lower)           			# 不区分字母大小写
print('不区分字母大小写:',char)

说明:采用sort()方法对列表进行排序时,对于中文的支持不是很好。排序的结果与我们常用的音序排序法或者笔画排序法都不一致。如果需要实现对中文内容的列表排序,还需要重新编写相应的方法进行处理,不能直接使用sort()方法。

锦囊3 将列表按自定义规则排序

使用sort()方法也可以按指定的规则进行排序。具体方法是先定义排序规则的函数,然后调用sort()方法时,指定key参数值为自定义的函数名。例如,定义一个包含字典子元素的列表,实现按字典的指定键值进行排序,代码如下:

# 定义排序规则函数
def rulesort(elem):
    return elem['english']

list1 = [{'name':'mr','english':99},
         {'name':'碧海苍梧','english':100},
         {'name':'零语','english':98}]
print('排序前:',list1)

list1.sort(key=rulesort) # 按指定规则排序
print('升序排序后:',list1)

list1.sort(key=rulesort,reverse=True) # 按指定规则排序
print('降序排序后:',list1)

锦囊4 按拼音顺序对列表按中文排序

在Python中,对列表按中文排序,可以借助第三方模块xpinyin实现。例如,定义保存三国人物名称列表,并对其按拼音顺序排序,代码如下:

from xpinyin import Pinyin  								# 导入第三方模块,需要先应用pip install xpinyin命令安装

pin = Pinyin()  											# 实例化
result = []  												# 临时列表
list1 = ['刘备','曹操','关羽','诸葛亮','张飞','周瑜']

print('排序前:',list1)

for item in list1:
    result.append((pin.get_pinyin(item),item)) 				# 添加拼音

result.sort()  												# 按拼音排序
result = [i[1] for i in result]  							# 去掉添加的拼音再生成列表
print('排序后:',result) 									# 输出排序后的结果

18. 【排序列表元素】sorted()函数

语法参考

sorted()函数用于对可迭代对象进行排序,返回一个重新排序的列表,使用该函数进行排序后,原列表的元素顺序不变。storted()函数的语法格式如下:

sorted(iterable, key=None, reverse=False)

参数说明:

  • iterable:表示可迭代对象,如列表、字符串、字典等;

  • key:可选参数,命名参数key是一个方法,用来指定排序的规则(即按照指定的方法或函数对可迭代对象进行排序),例如,设置“key=str.lower”,表示可迭代对象中的每个元素转换为小写字母后再进行排序,返回的仍然是可迭代对象中的元素。默认key=None,表示直接比较元素进行排序;

  • reverse:可选参数,排序规则,默认reverse=False,表示升序排列,如果reverse=True,则表示降序排列;

锦囊1 对数字列表进行排序

在Python中,提供了一个内置的sorted()函数,用于对列表进行排序。使用该函数进行排序后,原列表的元素顺序不变。例如,定义一个保存10学生Python理论成绩的列表,然后应用sorted()函数对其进行排序,示例代码如下:

grade = [98,99,97,100,100,96,94,89,95,100]     		# 10名学生Python理论成绩列表
grade_as = sorted(grade)                  			# 进行升序排列
print('升序:',grade_as)

grade_des = sorted(grade,reverse = True)      		# 进行降序排列
print('降序:',grade_des)
print('原序列:',grade)

锦囊2 对字符列表进行排序

定义一个保存字符的列表,然后应用sorted()函数对其进行排序,并指定参数key=str.lower,代码如下:

c = ['a','b','c','d','*','M','R','S','O','F','T']       			# 定义列表

# 默认按字符ASCII码进行排序
print('升序:',sorted(c))                               				# 进行升序排列
print('降序:',sorted(c,reverse = True))                				# 进行降序排列
print('转换为小写后升序:',sorted(c,key=str.lower))     				# 转换为小写后升序排序,a和A的值一样
print('转换为小写后降序:',sorted(c,key=str.lower,reverse = True))   	# 转换为小写后降序排列

锦囊3 按照列表中嵌套元组的指定元素进行排序

下面分别依据英语小A班学生列表students中元组的第1个下标值(年龄)和第2个下标值(身高)进行升序和降序排列,代码如下:

students = [('Adas', 3, 99), ('Lily', 4, 110), ('Bella',4, 112),('Anna',3,95)]  	# 定义列表(姓名、年龄、身高)

s1 = sorted(students, key=lambda x:x[2])                  							# 按身高进行升序排列
print('按身高升序:', s1)

s2  =sorted(students, key=lambda x:x[2], reverse=True)   							# 按身高进行降序排列
print('按身高降序:', s2)

s3 = sorted(students, key=lambda x:x[1])                  							# 按年龄进行升序排列
print('按年龄升序:', s3)

s4  =sorted(students, key=lambda x:x[1], reverse=True)   							# 按年龄进行降序排列
print('按年龄降序:', s4)

注意:列表对象的sort()方法和内置sorted()函数的作用基本相同,所不同的就是使用sort()方法时,会改变原列表的元素排列顺序,而使用storted()函数时,会建立一个原列表的副本,该副本为排序后的列表。

19. 【统计数值列表的元素和】sum()函数

语法参考

sum()函数用于对列表、元组或集合等可迭代对象进行求和计算。其语法格式如下:

sum(iterable[, start])

参数说明:

  • iterable:可迭代对象,如列表、元组、range对象等;

  • start:可选参数,指定相加的参数(即序列值相加后再次相加的值),如果没有设置此参数,则默认为0;

注意:在使用sum()函数对可迭代对象进行求和时,需要满足参数必须为可迭代对象且可迭代对象中的元素类型必须是数值型,否则将提示TypeError。

锦囊1:列表元素求和

sum()函数可以用于可迭代对象的求和计算,例如通过sum()函数对列表中元素求和,可以使用如下代码:

number = [10, 20, 30, 40, 50, 60, 70]
print('原列表:', number)
print('元素和:', sum(number))

# 10名学生Python理论成绩列表
grade_list = ['98','99','97','100','100','96','94','89','95','100']  
# 循环将字符类型转换为int
int_list = [int(i) for i in grade_list]     
print('Python理论总成绩为:',sum(int_list))

20. 【查找列表元素是否存在】保留字in

语法参考

保留字in主要用于判断特定的值在列表中是否存在,如果列表中存在要查找的元素返回True,否则返回False。其语法格式如下:

if 'A' in list:

参数说明:

  • 'A’表示需要在列表中查找的元素值。

  • list表示查找目标的列表名称。

  • 返回值:在列表中找到对应的元素将返回True,否则范围False。

锦囊1 查看列表中是否含有指定字符

通过保留字in,查看列表中是否含有指定字符。示例代码如下:

list1 = ['A','B','C','D','E','F','G']   		# 定义字符列表
if 'A' in list1:                       			# 判断列表中是否含有字符A
    print('判断结果为:','A'in list1)  			# 打印判断结果

锦囊2 获取列表中是否存在输入的气体元素

定义一个保存5个气体元素的列表,查找列表中是否含有输入的气体元素,示例代码如下:

verse = ['氦', '氖', '氩', '氪', '氙']       			# 定义气体元素列表
i = input('请输入需要查询的气体元素!')      				# 获取输入的气体

if i in verse:                               			# 判断列表中是否存在输入的气体
    print('列表中存在'+'“'+i+'”'+'元素!')
else:
    print('列表中不存在'+'“'+i+'”'+'元素!')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值