社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

通过10个例子快速掌握Python中的List

小白学视觉 • 3 年前 • 217 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达


List是Python中的内置数据结构,可用于存储任何数据类型或不同数据类型的混合。在本文中,我们将通过10个例子来介绍python中的list。


让我们开始吧!

#example 1import numpy as npa = [4,6,7,3,2]b = [x for x in a if x > 5]b[6, 7]

我们遍历一个列表(可迭代对象)并获取大于5的元素(条件)。


等效的for循环是:




    
b = []for x in a:if x > 5:    b.append(x)b[6, 7]

我们也可以在元素放入新列表之前对其进行某些处理:

#example 2import numpy as npa = [4,6,7,3,2]b = [x*2 for x in a if x > 5]b[12, 14]

我们将符合条件的项目乘以2,然后放入一个列表。


第三个例子是字符串列表:

#example 3names = ['Ch','Dh','Eh','cb','Tb','Td']new_names = [name for name in names if name.lower().startswith('c')]new_names['Ch', 'cb']

这次的条件是获取字符串中以”c”为开头的元素。因为有大小写之分,所以我们首先将所有字母转换为小写。


可迭代对象不一定是一个列表,例如我们可以迭代实际上是矩阵的二维Numpy数组。

#example 4import numpy as np


    
A = np.random.randint(10, size=(4,4))Aarray([[1, 7, 4, 4],               [5, 0, 0, 6],               [7, 5, 8, 4],               [1, 3, 2, 2]])max_element = [max(i) for i in A]max_element[7, 6, 8, 3]

我们迭代矩阵A中的每一行并取最大值。


列表可以存储任何数据类型。

#example 5vals = [[1,2,3],[4,5,2],[3,2,6]]vals_max = [max(x) for x in vals]vals_max[3, 5, 6]

我们在每个列表中创建一个最大值列表。


筛选条件也可以有多个。

#example 6names = ['Ch','Dh','Eh','cb','Tb','Td','Chb','Tdb']new_names = [name for name in names ifname.lower().endswith(


    
'b') and len(name) > 2]new_names['Chb', 'Tdb']

上面是得到字符串以字母”b”结尾且长度大于2.


我们可以将多个条件与其他逻辑运算符结合起来:

#example 7names = ['chb', 'ydb', 'thd', 'hgh']new_names = [name for name in names if name.endswith('b') | name.startswith('c')]new_names['chb', 'ydb']

现在我们考虑下面这个嵌套列表:

vals = [[1,2,3],[4,5,2],[3,2,6]]

我们希望从嵌套列表中取出每个元素,所以期望的输出是:

vals = [1,2,3,4,5,2,3,2,6]

可以通过如下方式实现:

#example 8vals = [[1,2,3],[4,5,2],[3,2,6]]vals_exp = [y for x in vals for y in x]vals_exp[1, 2, 3, 4, 5, 2, 3, 2, 6]

语法可能看起来不是很直观,与等价的for循环相对比,它就会很直观。

对于上面的嵌套列表操作,我们也可以添加条件。

text = [['bar','foo','fooba'],['Rome','Madrid','Houston'], ['aa','bb','cc','dd']]

我们只需要长度大于3的嵌套列表中的字符串。

#example 9text_1 = [y for x in text if len(x)>3 for y in x]text_1['aa', 'bb', 'cc', 'dd']

我们将条件放在嵌套列表上,而不是放在单个元素上。因此,等价的for/if循环语法如下所示。

我们也可以对单个元素设置一个条件。

#example 10text_2 = [y for x in text for y in x if len(y)>4]text_2['fooba', 'Madrid', 'Houston']

我们现在有长于4个字符的字符串。因为条件是在单个元素上,所以等价的嵌套for/if循环:

掌握这10个例子将会让我们对list的理解更上一层楼。

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇




下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目 即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/136268
 
217 次点击