python语言基础之列表(二)

上一期我们介绍了列表的创建删除以及对列表内元素的操作(对这些不了解的小伙伴可以查看一下上一篇博客python语言基础之列表(一)-CSDN博客),这一期我们继续讲关于列表的知识。

列表的统计计算

Python中的列表提供了内置的一些函数来实现统计计算方面的功能。下面介绍常用的功能。

获取指定元素出现的次数

使用列表对象的count()方法可以获取指定元素在列表中的出现次数。

语法格式如下:

listname.count(obj)

其中,listname为需要统计的列表名称,obj为需要统计出现次数的元素。

举例:

a = [1,3,1,68,98,43,32,78,104,43,45,34,62,43]
num = a.count(43)
print(num)

运行结果如下:

获取指定元素首次出现的下标

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

语法格式如下:

listname.index(obj)

其中,listname为列表名称,obj为需要查找的元素,返回值:首次出现的索引值。

举例:

查找数字43在列表中第一次出现的索引值。

a = [1,3,1,68,98,43,32,78,104,43,45,34,62,43]
num = a.index(43)
print(num)

运行结果如下:

注意:如果指定的对象不存在,则抛出异常,如下图:

统计数值列表的元素和

在 Python 中,提供了sum()函数用于统计数值列表中各元素的和。

语法格式如下::

sum(listname,sta)

其中,listname为要统计的列表,sta表示统计出列表总和后结果再加上sta。

举例:

a = [1,3,1,68,98,43,32,78,104,43,45,34,62,43]
num1 = sum(a)
num2 = sum(a,5)
print(num1)
print(num2)

运行结果如下:

对列表进行排序

在实际开发时,经常需要对列表进行排序。Python中提供了两种常用的对列表进行排序的方法,下面分别进行介绍:

使用列表对象的sort()方法实现

列表对象提供了sort0方法用于对原列表中的元素进行排序。排序后,原列表中的元素顺序将发生改变。

语法格式如下:

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

其中,listname表示要进行排序的列表,key表示指定一个从每个列表元素中提取一个比较键(例如,设置“key=str.lower”表示在排序时不区分字母大小写),reverse为可选参数,如果将其值指定为True,则表示降序排列;如果将其值指定为False,则表示升序排列。默认为升序排列。

举例:

a = [1,3,1,68,98,43,32,78,104,43,45,34,62,42]
print('原列表:',a)
a.sort()
print('升序后列表:',a)
a.sort(reverse=True)
print('降序后列表:',a)

运行结果如下:

使用内置函数sorted()实现

在 Python中,提供了一个内置的sorted()函数,用于对列表进行排序。使用该函数进行排序后,原表的元素顺序不变。

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

其中,listname表示需要进行排序的列表名称,key表示指定从每个元素中提取一个用户比较的键,reverse为可选参数,如果将其值指定为True,则表示降序排列;如果将其值指定为False,则表示升序排列。默认为升序排列。

举例:

a = [1,3,1,68,98,43,32,78,104,43,45,34,62,42]
a_as = sorted(a)
print('升序后列表:',a_as)
a_des = sorted(a,reverse=True)
print('降序后列表:',a_des)

print('原列表:',a)

运行结果如下:

列表推导式

使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。列表推导式通常有以下几种常用的语法格式:

生成指定范围的数值列表

语法格式如下:

listname = [Expression for var in range]

其中,listname表示生成列表的名称,Expression为表达式,用于计算新列表的元素,var为循环变量。

举例:

import random                   #导入random库
randomnumber =[random.randint(10,100) for i in range(10)]
print("生成的随机数为",randomnumber)

运行结果如下:

根据列表生成指定需求的列表

语法格式如下:

newist = [Expression for var in listname]

其中,newlist表示新生成的列表名称,expression为表达式,用于计算新列表元素,var为循环变量,listname为用于生成新列表的原列表。

举例:

已知一个列表,生成一个原列表乘以二的新列表。

list1 = [3,6,9,11,5,23,9]
list2 = [i*2 for i in list1]
print(list1)
print(list2)

运行结果如下:

从列表中选择符合条件的元素组成新的列表

语法格式如下:

newlist = [Expression for var in listname if condition]

其中,newlist:表示新生成的列表名称,Expression:表达式,用于计算新列表的元素,var:变量,值为后面列表的每个元素值,listname用于生成新列表的原列表,condition:条件表达式,用于指定选条件。

举例:

已知一个列表,生成一个原列表中大于7的元素乘以2的新列表。

list1 = [3,6,9,11,5,23,9]
list2 = [i*2 for i in list1 if i >7]
print('原列表:',list1)
print('新列表:',list2)

运行结果如下:

二维列表

在Python中,二维列表通常是一个包含列表的列表,即列表的每个元素都是一个列表。

定义二维列表

创建二维列表有以下3种常用的方法:

直接定义二维列表

在 Python 中,二维列表就是包含列表的列表。即一个列表的每个元素又都是一个列表。

语法格式如下:

listname =[[元素 11,元素 12,元素 13,… 元素 1n],

[元素 21,元素 22,元素 23,…,元素 2n],

[元素 n1,元素 n2,元素 n3,…. 元素 nn]]

其中,listname表示生成的列表名称,

[元素 11,元素 12,元素 13,… 元素 1n]表示二维列表的第一行,也是第一个元素,其中元素11,元素 12,元素 13,… 元素 1n代表第一行中的列,

[元素 21,元素 22,元素 23,…,元素 2n]表示列表的第二行,

[元素 n1,元素 n2,元素 n3,…. 元素 nn]表示列表的第n行

举例:

list = [['李梅','女',18],
        ['赵丹','女',16],
        ['王华','男',19]]
print(list)

运行结果如下:

使用嵌套的for循环创建

创建二维列表,可以使用嵌套的for循环实现。

举例:

生成一个5行6列的二维列表

a = []                          #新建一个空列表,用于保存生成的二维列表
for i in range(5):
    a.append([])                #每一次循环在列表a中再添加一个空列表
    for j in range(6):
        a[i].append(j)          #为内层列表添加元素
print(a)

运行结果如下:

使用列表推导式创建

使用列表推导式也可以创建二维列表,而且这种方法也是被推荐的方法,因为它比较简洁。

举例:

生成一个8行7列的二维列表:

a = [[j for j in range(7)] for i in range(8)]
print(a)

运行结果如下:

访问二维列表

创建二维数组后,可以通过以下语法格式访问列表中的元素:

listname[下标 1][下标 2]

其中,listname表示列表名称,下标1表示列表中第几行。下标值从0开始,即第1行的下标为0。下标2:表示列表中第几列。下标值从0开始,即第1列的下标为0。

举例:

访问上述二维列表a的第5行第3列的元素:

a[4][2]

以上就是python语言中列表的详细功能介绍。

于高山之巅,方见大河奔涌;于群峰之上,便觉长风浩荡。

下一篇   python语言基础之元组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值