本文作者:陈丹慧,中南财经政法大学金融学院

本文编辑:任   哲

技术总编:张馨月爬虫俱乐部云端课程爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专题训练营已经圆满结束啦~应广大学员需求,我们的课程现已在腾讯课堂全面上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《来腾讯课堂学Stata和Python啦600元课程优惠券,集赞50个再领200元课程优惠券!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元!导读

已知列表list1=[1,2,3,4,5,6,7,8,9,10],如果我们想把list1中每个元素都加上2010,生成一个新列表,该怎么做呢?勤奋的小白会这样做:1list1=list(range(1,11))

2list2=[]

3for i in list1:

4    list2.append(i+2010)

5list2输出结果为:

而用列表生成式(List Comprehensions)一行就能代替上述代码:1[i+2010 for i in range(1,11)]输出结果为:

是不是很神奇呢?一行代码就创造了有规律的新列表,看起来就像一根藤上结出的果实。今天,我就来带大家玩转列表生成式,掌握列表生成式的更多用法。一、语法根据Python官方文档的说明,列表生成式是一种简便快捷地创造列表的方式。它通常是用来创建一个新列表,这个新列表的元素是在可迭代对象(包括字符串、元组、列表、字典、集合等可被for遍历循环的对象)的基础上生成的。1基本语法[exp for iter_var in iterable]作用过程:迭代iterable中的元素,再根据表达式exp计算出一个新值,最后将所有计算出的新值放在列表中,就生成了一个新的列表。刚刚在导读中给大家展示了用列表生成式在list1的基础上生成list2,这里再详解一下它的作用过程:1[i+2010 for i in range(1,11)]首先我们知道range(1,11)生成一个1到10的有序序列,它是可以被for遍历循环的。第一轮时,赋值i=1,再根据"i+2010"算出新值"2011";第二轮时,赋值i=2,再根据表达式算出新值"2012"……最后一轮时,赋值i=10,根据表达式算出的新值为"2020"。这些新值会按照顺序排列放在一个的新列表中被返回,即我们在导读中看到的输出结果。2通过if语句增加过滤功能[exp for iter_var in iterable if_exp]作用过程:迭代iterable中每个元素,每次迭代都判断下if_exp表达式是否为真,如果为True则执行下一步,将返回元素通过exp得到一个新值;如果为False,则丢弃该元素,进行下一次迭代。最后,所有通过exp计算出来的新值将以一个新列表的形式返回。我们用它来实现以下功能:过滤原列表list3=[-4,-2,0,2,4]中的负数。1list3=[-4,-2,0,2,4]

2list4=[]

3#不用列表生成式

4for x in list3:

5    if x>=0:

6        list4.append(x)

7#使用列表生成式

8list4=[x for x in list3 if x >=0]

9list4输出结果为:

3嵌套循环[exp for iter_var_A in iterrable_A for iter_var_B in iterable_B]

作用过程:先迭代iterable_A中的元素,每当迭代一个iterable_A中的一个元素,随之就会把iterable_B中每个元素都迭代一遍,最后根据表达式exp算出新值,并返回一个新列表。乍一看,是不是头皮发麻。不要怕,看了下面的例子你就会豁然开朗。

给定list5=["星期","周"],list6=["一","二","三","四","五","六","七"],用列表生成式生成一个新列表list7,将新列表中元素为list5,list6对应位置元素相加,代码如下:1list5=["星期","周"]

2list6=["一","二","三","四","五","六","日"]

3list7=[]

4#不使用列表生成式

5for i in list5:

6    for j in list6:

7        list7.append("%s"%i+"%s"%j)

8#使用列表生成式

9list7=["%s"%i+"%s"%j for i in list5 for j in list6]

10list7

最后输出结果如下:

二、应用1字典里的应用列表生成式结合字典的items方法,可以生成键值对列表:1dict={"Jack":179,"Rose":172}

2list=[k+"身高为"+str(v)+"cm" for k,v in dict.items()]

3list输出结果如下:

2批量删除空格结合字符串的strip方法来删除原列表中所有字符串元素中的空白字符,生成一个新列表:1list=[' 爬虫','  俱','乐部  ']

2[s.strip() for s in list2]输出结果如下:

3输出某个目录下所有文件夹和文件名结合os模块,列表生成式能输出某个目录下所有文件夹和文件名。1import os

2[d for d in os.listdir("E:/Python/python基础")]输出结果如下:今天的介绍就到这里了。希望大家能好好应用列表生成式,让你的代码简洁又美观!之后我们还会介绍更多有趣的知识,来帮你提升效率,敬请期待哦!关于我们微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

python中列表生成式strip_列表生成式让你的代码简洁又美观相关推荐

  1. python中列表生成式strip_列表生成式|让你的代码简洁又美观

    本文作者:陈丹慧,中南财经政法大学金融学院 文字编辑:任 哲 技术总编:张馨月 导读 已知列表list1=[1,2,3,4,5,6,7,8,9,10],如果我们想把list1中每个元素都加上2010, ...

  2. python如何创建函数对列表里的元素进行分类_zip()函数如何在python中遍历多个列表?...

    在对列表的元素进行找寻时,会频繁的说到遍历的理念.对于复杂的遍历要求,如多个列表中查找就显然不适合用for循环.本篇所要带来的是zip() 函数的方法,能够对多个迭代器进行遍历.下面我们就python ...

  3. 如何在Python中串联两个列表?

    如何在Python中串联两个列表? 例: listone = [1, 2, 3] listtwo = [4, 5, 6] 预期结果: >>> joinedlist [1, 2, 3, ...

  4. python 两个列表比较_如何在Python中比较两个列表

    python 两个列表比较 In this article, we will understand the different ways to compare two lists in Python. ...

  5. python字典元素由什么组成_【】Python中,字典、列表、元组分别用 、 、 作定界符,字典的每个元素由两部分组成,分别是 和 ,其中 不允许重复。...

    []Python中,字典.列表.元组分别用 . . 作定界符,字典的每个元素由两部分组成,分别是 和 ,其中 不允许重复. 更多相关问题 (题干)女,25岁,外伤后右侧股骨髁上骨折,在转院途中突然出现 ...

  6. 介绍python中几种遍历列表的for循环方法

    我们在使用列表的过程中,经常需要遍历列表的所有元素,对每个元素执行相同的操作.今天就给大家介绍python中几种遍历列表的for循环方法. 首先我们先构造一个numbers列表,如下: numbers ...

  7. python中for循环遍历列表的几种方法

    列表在使用过程中,经常需要遍历列表的所有元素,对每个元素执行相同的操作.今天介绍python中for循环遍历列表的几种方法. 方法1:使用for循环简单结构遍历 首先我们新建一个城市列表,然后分别展示 ...

  8. python中append函数合并列表且列表内数字从高到低_35个高级Python知识点总结

    No.1 一切皆对象 众所周知,Java中强调"一切皆对象",但是Python中的面向对象比Java更加彻底,因为Python中的类(class)也是对象,函数(function) ...

  9. python列表内数字排序_如何在Python中手动排序数字列表?

    规格:Ubuntu 13.04,Python 3.3.1 背景:Python的初学者,遇到了这个"手动排序"的问题. 我被要求做的是:"让用户输入3个数值并将它们存储在3 ...

最新文章

  1. MySQL优化配置之query_cache_size
  2. mysql as用法_MySQL基础学习总结
  3. 算法----------字符串相乘(Java 版本)
  4. 企业IT解决方案经验分享活动
  5. STM32F4 HAL库开发 --时钟使能和配置
  6. element-ui中table表头错位问题
  7. 异常处理_月隐学python第19课
  8. 小程序json字符串取值问题,怎么取出来的是undefined,eval函数不能用?
  9. 【福利】囚犯抓绿豆,谁生谁死?
  10. Problem B: 求各位数字之和
  11. 3-JAVA中的JSON操作
  12. java generic new_java中generic实例详解
  13. 【OSGI】Error osgi xx Invalid value for DynamicImport-Package dynamic.import.pack
  14. Spring框架零基础学习(一):IOC|DI、AOP
  15. qrect在图片上显示矩形框_Mac上用LabelImg手动标记图片
  16. PHP常用函数归类总结【大全】
  17. LearnGL - 06.2 - Matrix - 矩阵03 - 逆矩阵、行列式、伴随矩阵、余子式、代数余子式、练习
  18. java开发工程师面试问题大全及答案大全
  19. uk码对照表_尺码UK5 对应的中国尺码是多少?
  20. 如果牛顿是程序员,那么?

热门文章

  1. iOS打开照相机与本地相册选择图片
  2. 计算机制图专业是什么,电脑制图是什么工作
  3. Nginx支持HTTPS,生成SSL证书
  4. 【树莓派开发】树莓派 3B 入手 基础篇(1)
  5. freemarker生成word文档 文档打不开
  6. 自用分享丨45个自媒体必备工具素材网站
  7. java后端限制输入的名字的汉字长度
  8. asp.net使用echarts展示图表数据
  9. centos7添加、删除软连接
  10. 英语流利说 第14天