在Python中,列表理解通常用于编写单行语句,这些语句通过可迭代对象进行迭代以创建新的列表或字典。本文首先介绍for循环如何在Python中工作,然后解释如何在Python中使用列表理解。

Python中的for循环

Python中的for循环语句按顺序遍历任何对象、列表、字符串等的成员。与其他编程语言相比,它的语法更加简洁,不需要手工定义迭代步骤,也不需要开始迭代。尽管有几种方法可以使它的行为与其他编程语言相同(本文将不详细讨论)。还可以使用continue、break、pass等语句控制for循环。下面是Python中for循环的一个简单示例:

for x in range(10):

print(x)for x in range(10): print(x)

上面的for循环将输出从0到9的十个数字。

列表理解

列表理解只不过是一种在单线语句中编写多行for循环的简单方法。下面的列表理解示例将通过在其中包含所有“ x”值来创建一个新列表,其名称为[0,1,2,3,4,5,6,7,8,9]。

numbers = [x for x in range(10)]

print (numbers)numbers = [x for x in range(10)]print (numbers)

请注意,列表理解始终会创建一个新列表,并且不会修改表达式中使用的原始可迭代对象。典型的列表理解表达式必须具有“ for”子句,并且可以后接“ if”和“ else”条件语句。在不使用列表理解的情况下,以上示例将按照以下方式编写:

numbers = []

for x in range(10):

numbers.append(x)

print (numbers)numbers = []for x in range(10): numbers.append(x)print (numbers)

性能和可读性

列表比循环更容易理解。然而,除非你经历了数千个项目,否则你不会注意到显著的性能改进。虽然列表理解为循环编写提供了一种简洁的方法,但复杂的表达式可能导致可读性差和代码冗长。保持代码可读性很重要,除非程序需要获得最大性能。

示例:对字典和集合使用列表理解语法

Python字典是在键值对中定义的元素的集合,这些元素是不允许重复的唯一值的集合。列表理解还可以用于Python字典和集合。语法略有不同,现在必须在表达式周围使用大括号而不是方括号。您还将得到一个新的dictionary/set对象,而不是一个新的列表。

data = {"city": "new york", "name": "john doe"}

formatted_data = {k: v.title() for k,v in data.items()}

print (formatted_data)data = {"city": "new york", "name": "john doe"}formatted_data = {k: v.title() for k,v in data.items()}print (formatted_data)

上面的示例将字符串值转换为title case,并创建了一个名为“ formatted_data”的新字典,其输出为:{'city':'New York','name':'John Doe'}。您还可以通过在左侧指定现有的字典变量来更改dictionary / set in-place。

data = {"city": "new york", "name": "john doe"}

data = {k: v.title() for k,v in data.items()}

print (data)data = {"city": "new york", "name": "john doe"}data = {k: v.title() for k,v in data.items()}print (data)

如果不使用字典理解,代码将如下所示:

data = {"city": "new york", "name": "john doe"}

formatted_data = {}

for k, v in data.items():

formatted_data[k] = v.title()

print (formatted_data)data = {"city": "new york", "name": "john doe"}formatted_data = {}for k, v in data.items(): formatted_data[k] = v.title()print (formatted_data)

由于集合中没有键值对,因此可以按照与列表理解相同的方式定义集合理解。唯一的区别是花括号的使用。

示例:列表理解中的多个For循环

上面提到的列表理解示例是基本的,并使用单个“ for”语句。下面是一个使用多个for循环和条件“ if”语句的示例。

adjectives = ["Disco", "Eoan", "Focal", "Artful"]

animals = ["Dingo", "Ermine", "Fossa", "Beaver"]

codenames = [x + " " + y for x in adjectives for y in animals if y.startswith(x[0])]

print (codenames)adjectives = ["Disco", "Eoan", "Focal", "Artful"]animals = ["Dingo", "Ermine", "Fossa", "Beaver"]codenames = [x + " " + y for x in adjectives for y in animals if y.startswith(x[0])]print (codenames)

该代码将显示['Disco Dingo','Eoan Ermine','Focal Fossa']作为输出。两个for循环遍历“形容词”和“动物”列表,并且两个单词的首字母相同时,它们的成员使用空格连接在一起。不使用列表理解,代码如下所示:

adjectives = ["Disco", "Eoan", "Focal", "Artful"]

animals = ["Dingo", "Ermine", "Fossa", "Beaver"]

codenames = []

for x in adjectives:

for y in animals:

if y.startswith(x[0]):

codenames.append(x + " " + y)

print (codenames)adjectives = ["Disco", "Eoan", "Focal", "Artful"]animals = ["Dingo", "Ermine", "Fossa", "Beaver"]codenames = []for x in adjectives: for y in animals: if y.startswith(x[0]): codenames.append(x + " " + y)print (codenames)

示例:带有if-else子句的列表理解

下面的示例将显示列表理解中if和else语句的用法。

number_list = [1, 2, 3, 4]

another_list = [5, 6, 7, 8]

result = [True if (x + y) % 2 == 0 else False for x in number_list for y in another_list]

print (result)number_list = [1, 2, 3, 4]another_list = [5, 6, 7, 8]result = [True if (x + y) % 2 == 0 else False for x in number_list for y in another_list]print (result)

在遍历两个列表时,上面的列表理解检查这对元素的总和是否为偶数。运行上面的代码将为您显示[True,False,True,False,False,True,False,True,True,False,True,False,False,True,True,False,True]作为输出。不使用列表理解,代码会如下所示:

number_list = [1, 2, 3, 4]

another_list = [5, 6, 7, 8]

result = []

for x in number_list:

for y in another_list:

if (x + y) % 2 == 0:

result.append(True)

else:

result.append(False)

print (result)number_list = [1, 2, 3, 4]another_list = [5, 6, 7, 8]result = []for x in number_list: for y in another_list: if (x + y) % 2 == 0: result.append(True) else: result.append(False)print (result)

结论

列表理解提供了一种编写简洁循环语句的好方法。但是,如果使用多个循环和条件语句,它们很快就会变得复杂和难以理解。最后,它使程序员感到舒适,但通常最好是编写明确、可读和易于调试的代码,而不使用太多的速记。

python中result的用法_关于Python中的列表理解及用法相关推荐

  1. 无法从套接字中获取更多数据_数据科学中应引起更多关注的一个组成部分

    无法从套接字中获取更多数据 介绍 (Introduction) Data science, machine learning, artificial intelligence, those terms ...

  2. python中content的用法_学python吗,教你5个python现学现用的有趣用法

    在我们使用python的过程中也会遇到一些有意思的用法,这里找到了一些总结有趣的 话不多说,接着看下去吧!!!!python高薪就业(视频.学习路线.免费获取)​shimo.im for-else用法 ...

  3. python中3or5什么意思_解析python中and与or用法

    在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一.>>> 1 and 2 and 3 3 > ...

  4. python中主函数用法_【Python 1-13】Python手把手教程之——详解函数和函数的使用...

    - 作者 | 弗拉德 来源 | 弗拉德(公众号:fulade_me) 定义函数 下面是一个打印问候语的简单函数,名为greet_user(): def greet_user(): "&quo ...

  5. python正则表达式group用法_【Python】正则表达式用法

    导读:正则在各语言中的使用是有差异的,本文以 Python 3 为基础.本文主要讲述的是正则的语法,对于 re 模块不做过多描述,只会对一些特殊地方做提示. 很多人觉得正则很难,在我看来,这些人一定是 ...

  6. python类高级用法_十.python面向对象高级用法

    1.反射 1.1 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的 ...

  7. python文本结构化处理_在Python中标记非结构化文本数据

    python文本结构化处理 Labelled data has been a crucial demand for supervised machine learning leading to a n ...

  8. python中的递归思想_〖Python〗-- 递归、面向对象初识及编程思想

    [递归.面向对象初识及编程思想] 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策 ...

  9. python快速生成文字云_在Python中创建文字云或标签云

    作者|ISHA5 编译|Flin 来源|analyticsvidhya 介绍 从开始从事数据可视化工作的那一天起,我就爱上它了.我总是喜欢从数据中获得有用的见解. 在此之前,我只了解基本图表,例如条形 ...

最新文章

  1. 用 Fiddler 来弥补 Chrome Network 的小缺点
  2. OpenCV A-KAZE匹配的实例(附完整代码)
  3. JAVA子类是球父类是圆_java的父类和子类,这是矛盾...
  4. protobuf java基础
  5. 【jQuery Demo】图片由下至上逐渐显示
  6. 算法竞赛入门经典 第二章总结
  7. Nginx根据路径设置静态资源
  8. “我在苹果商店下载了一个诈骗App,损失60万美金!”
  9. 文件服务器存储解决方案探索
  10. 大数据框架之Spark详解
  11. Linux课程设计每日小结
  12. Pubwin服务端重装(安装)教程
  13. Android NFC的应用
  14. Wap友链刷量软件V5.1
  15. uniapp 腾讯云活体人脸核身(超详细)
  16. Statement与PreparedStatement
  17. 【愚公系列】2021年11月 攻防世界-进阶题-MISC-025(Miscellaneous-200)
  18. 移动端App广告常见的10种形式
  19. Mockito中@Mock与@InjectMock
  20. 【原】充电桩APP-原型设计

热门文章

  1. NBA表格_双红!34中24!NBA季后赛【掘金vs湖人】
  2. ASP.NET 简介
  3. 计算机终端mac是什么,Mac电脑终端操作
  4. 企业区块链在2018年已经就绪
  5. 【体系结构】山东大学计算机体系结构知识点清单
  6. 408计算机学科专业基础综合2020,2018年408计算机学科专业基础综合.pdf
  7. 北大方正集团收入突破千亿,在中国企业500强排名提升24位
  8. JavaScript解决异步的前世今生
  9. 零数科技创始人林乐博士荣登“长三角G60科创走廊创业榜单—星耀G60”
  10. 可行性、易用性性与用户体验的区别