python的列表和我上面的歌曲列表是类似的,都是按照一系列特定顺序排列的元素组成的。
它属于python内置可变序列。形式上列表的所有元素都放在'[ ]'中,相邻元素用',' 分隔。它里面可以放证书、字符串、列表、元组等任何类型。并且在一个列表内,元素的类型也是允许不同的。因此可以看出列表是非常灵活的。下来我们看看元素的一些特点:
列表的创建
列表创建语法格式:
listname = [element1, element2, element13, elementN]
例如:
user = ['张三', 22, '北京', '程序员',] print(user) #['张三', 22, '北京', '程序员'] num = [1, 2, 3, 4, 5, 6] print(num) #[1, 2, 3, 4, 5, 6]
说明:使用列表的时候,虽说可以将不同的数据类型放入同一个列表。但是为了提高程序的可读性,一般我们不这么做。一个列表内放的都是同一种类型元素
创建一个空列表的格式:
emptylist = []
创建一个数值列表:
在python中,数值列表的创建可以使用list()函数直接将range()函数循环出来的结果转换为列表。
#创建一个10-20之间的偶数(不包括20) num = list(range(10,20,2)) print(num) #[10, 12, 14, 16, 18]
列表的删除
列表元素的删除我们可以使用 del 语句,语法格式如下:
del listname[元素索引]
例如:
#创建一个10-20之间的偶数(不包括20) num = list(range(10,20,2)) print(num) #[10, 12, 14, 16, 18] #删除num列表第二个元素 del num[2] print(num) [10, 12, 16, 18]
也可以使用此方法删除整个列表。前提注意:此列表一定是存在的!
#创建一个10-20之间的偶数(不包括20) num = list(range(10,20,2)) print(num) #[10, 12, 14, 16, 18] del num print(num) #NameError: name 'num' is not defined
列表的遍历
遍历列表元素是一种很常见的操作,它可以执行查询、处理等操作。关于如何遍历我们有两种方式:
1.使用for循环。语法格式如下:
for num in nums: print(num)
例如:
#LOL下路部分ADC ADs = ['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '暴走萝莉', '复仇之矛', '深渊巨口', '圣枪游侠', '赏金猎人'] for ad in ADs: #遍历打印所有ad print(ad) ''' 输出结果: 寒冰射手 皮城女警 荣耀行刑官 探险家 法外狂徒 戏命师 暴走萝莉 复仇之矛 深渊巨口 圣枪游侠 赏金猎人 '''
2.使用for循环和enumerate()函数。使用这套组合的好处是可以将元素的索引和值都打印出来。例如:
#LOL下路部分ADC ADs = ['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '暴走萝莉', '复仇之矛', '深渊巨口', '圣枪游侠', '赏金猎人'] for index,ad in enumerate(ADs): print(index+1,ad) ''' 输出结果: 1 寒冰射手 2 皮城女警 3 荣耀行刑官 4 探险家 5 法外狂徒 6 戏命师 7 暴走萝莉 8 复仇之矛 9 深渊巨口 10 圣枪游侠 11 赏金猎人 '''
列表元素添加
方法一:
使用append()方法向列表添加元素,只能添加到列表末尾。
#LOL下路部分ADC adc = ['寒冰射手', '皮城女警', '荣耀行刑官', '探险家'] print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家'] adc.append('麦林炮手') print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '麦林炮手']
方法二:
使用insert()方法向列表添加元素,可以添加到指定位置,但是因为其执行效率低,所以一般这种方法用的不是很多。
#LOL下路部分ADC adc = ['寒冰射手', '皮城女警', '荣耀行刑官', '探险家'] print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家'] adc.insert(2,'暗夜猎手') #使用insert()方法将新ad添加到索引为2的位置处 print(adc) #['寒冰射手', '皮城女警', '暗夜猎手', '荣耀行刑官', '探险家']
方法三:
使用extend()方法适用于将一个列表中的元素全部插入到另外一个列表中去。
#LOL下路部分ADC adc = ['寒冰射手', '皮城女警', '荣耀行刑官', '探险家'] sup = ['牛头酋长', '曙光女神', '星界游神', '弗雷尔卓德之心'] print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家'] print(sup) #['牛头酋长', '曙光女神', '星界游神', '弗雷尔卓德之心'] adc.extend(sup) #使用extend()方法将辅助列表中的全部元素添加到ad列表之后 print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '牛头酋长', '曙光女神', '星界游神', '弗雷尔卓德之心']
列表元素删除
删除有两种一种根据索引删除,一种根据值删除。
删除一:根据索引删除,前面说过了,就是按照
del listname[索引值]
来操作,再来看一下:
#LOL下路部分ADC adc = ['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '暴走萝莉', '复仇之矛', '深渊巨口', '圣枪游侠', '赏金猎人'] print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '暴走萝莉', '复仇之矛', '深渊巨口', '圣枪游侠', '赏金猎人'] #删除最后一位ad del adc[-1] print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '暴走萝莉', '复仇之矛', '深渊巨口', '圣枪游侠']
删除二:使用值删除就不能再用之前的方法,就要用到remove()方法了。
#LOL下路部分ADC adc = ['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '暴走萝莉', '复仇之矛', '深渊巨口', '圣枪游侠', '赏金猎人'] print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '暴走萝莉', '复仇之矛', '深渊巨口', '圣枪游侠', '赏金猎人'] #删除ad-深渊巨口 adc.remove('深渊巨口') print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '暴走萝莉', '复仇之矛', '圣枪游侠', '赏金猎人']
列表统计学
1.计算指定元素出现的次数:使用列表对象的count()方法可以计算出指定元素在列表中出现的次数。
#LOL下路部分ADC adc = ['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '皮城女警', '暴走萝莉', '复仇之矛', '荣耀行刑官', '深渊巨口', '圣枪游侠', '荣耀行刑官', '赏金猎人'] print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '皮城女警', '暴走萝莉', '复仇之矛', '荣耀行刑官', '深渊巨口', '圣枪游侠', '荣耀行刑官', '赏金猎人'] #统计'荣耀行刑官'出现的次数 num = adc.count('荣耀行刑官') print(num) #3 #统计'皮城女警'出现的次数 num = adc.count('皮城女警') print(num) #2
2.获取指定元素首次出现的下标,使用列表对象的index()方法可以获取指定元素在列表中首次出现的索引。
#LOL下路部分ADC adc = ['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '皮城女警', '暴走萝莉', '复仇之矛', '荣耀行刑官', '深渊巨口', '圣枪游侠', '荣耀行刑官', '赏金猎人'] print(adc) #['寒冰射手', '皮城女警', '荣耀行刑官', '探险家', '法外狂徒', '戏命师', '皮城女警', '暴走萝莉', '复仇之矛', '荣耀行刑官', '深渊巨口', '圣枪游侠', '荣耀行刑官', '赏金猎人'] #判断'戏命师'第一次出现的位置 ind = adc.index('戏命师') print(ind) #5 #判断'寒冰射手'第一次出现的位置 ind = adc.index('寒冰射手') print(ind) #0
3.统计和。使用sum()函数可以计算列表中所有数字之和。
#期末考试部分成绩 grade = [88,77,99,87,89,78,79,97,98] #计算考试总分 total = sum(grade) print('考试总成绩:', total) #考试总成绩:792
列表排序
1.使用列表对象的sort()方法进行排序,其中sort()方法有一个参数reverse,其默认代表升序排列。当其值位True时,代表降序排列。
#期末考试部分成绩 grade = [88,77,99,87,89,78,79,97,98] print('排序之前:', grade) grade.sort() print('默认升序:', grade) grade.sort(reverse=True) print('手动将序:', grade) print('初始列表元素顺序改变',grade) ''' 排序之前: [88, 77, 99, 87, 89, 78, 79, 97, 98] 默认升序: [77, 78, 79, 87, 88, 89, 97, 98, 99] 手动将序: [99, 98, 97, 89, 88, 87, 79, 78, 77] 初始列表元素顺序改变 [99, 98, 97, 89, 88, 87, 79, 78, 77] '''
2.使用python内置的sorted()方法进行排序。
#期末考试部分成绩 grade = [88,77,99,87,89,78,79,97,98] print('排序之前:', grade) sorted(grade) print('默认降序:', grade) sorted(grade,reverse=True) print('手动升序:', grade) print('初始列表元素顺序发生改变', grade) ''' 排序之前: [88, 77, 99, 87, 89, 78, 79, 97, 98] 默认降序: [77, 78, 79, 87, 88, 89, 97, 98, 99] 手动升序: [99, 98, 97, 89, 88, 87, 79, 78, 77] 初始列表元素顺序不发生改变 [88, 77, 99, 87, 89, 78, 79, 97, 98] '''
说明:其实不管是列表sort()方法还是python的sorted()方法,使用方法和处理结果都是一样的。
区别就在于那个列表的sort()方法会改变列表先前元素的排列顺序。而使用sorted()方法则不会改变先前列表元素的排序。
列表就说到此处,有问题欢迎各位小伙伴们留言。
下一期我们看另外一个重要的序列结构-元组