列表生成式:使用python内置的非常简却强大的List Comprehensions来创建list的生成式

一些例子:

#生成list原始方法>>> L=list(range(100))
>>> print (L)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>> L=[]
>>> for x in range(1,100):L.append(x*x)>>> print(L)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604, 9801]
#生成式生成comprehensions,但有语法限制,要加[],否则报语法错误>>> x * x for x in range(1,11):SyntaxError: invalid syntax#x*x是生成条件,就是取平方根
>>> [x * x for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

#生成条件求平方根,但是list可以加if判断读出偶数的平方根
>>> [x*x for x in range(1,11) if x %2 ==0]
[4, 16, 36, 64, 100]

#2个for不同参数取值,一一匹配,这种试不常用
>>> [m+n for m in 'ABC' for n in 'dzg']
['Ad', 'Az', 'Ag', 'Bd', 'Bz', 'Bg', 'Cd', 'Cz', 'Cg']

#求出系统中目录带.的所有目录集合
>>> import os
>>> [d for d in os.listdir('.')]
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python3.dll', 'python36.dll', 'pythonw.exe', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll']

#当然也可以生成dict,这是原始dict
>>> d={'x':'A','y':'B','z':'C'}
>>> for k,v in d.items():print(k,'=',v)x = A
y = B
z = C

#利用生成器来打印循环出key,value
>>> [k+'='+v for k,v in d.items()]
['x=A', 'y=B', 'z=C']

#在列表生成器中加入对字符串的处理条件
>>> L=['Hello','World','IBM','Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
>>> [s[0:1].upper() for s in L]
['H', 'W', 'I', 'A']
>>> [s[0:].upper() for s in L] #从0位开始所有都大写
['HELLO', 'WORLD', 'IBM', 'APPLE']
>>> [s.capitalize() for s in L] #第一个字母大写其它小写
['Hello', 'World', 'Ibm', 'Apple']

 

这种是需要的时候,如果不记得可百度查询。没有好办法。用的多了,也就记得熟悉了。但要知道它有这个功能

最后来个题:

#L=['HEllo','world',18,'apple',None]
#期待输出: ['hello', 'world', 'apple']
>>> L=['HEllo','world',18,'apple',None]
>>> L1=[]
>>> [i for i in L if isinstance(i,str)]
['HEllo', 'world', 'apple']
>>> for i in L:if isinstance(i,str):L1.append(i)>>> [x.lower() for x in L1]
['hello', 'world', 'apple']

  

python-列表生成器相关推荐

  1. python:列表生成器

    今天来聊聊python的列表生成器 最简单的: [x for x in range(10)] 得到的结果是: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 稍微复杂一点的: [x fo ...

  2. python列表生成器语法_Python 列表生成式\生成器

    Python 列表生成式+生成器 一.列表生成式 1.什么是列表生成器 一种可以便捷地生成列表的表达式,有时候可以替换list.append(变量) 2.需求. 如何将列表中的每个数据都加1 列表:d ...

  3. python列表生成器

    列表生成器 列表生成器为创建列表提供了一种简洁的方式.其语法为 li = [f(var) for var in iterable if condition] f(var)为变量var的表达式,f(va ...

  4. python列表生成器语法_python语法_列表生成器_生成器_迭代器_异常捕获

    列表生成式 a = [x for x in range(10)] print(a) x 可进行操作 a = [x*2 for x in range(10)] print(a) x甚至可以为函数, de ...

  5. python 列表生成器放while_史上最全 Python 迭代器与生成器

    原标题:史上最全 Python 迭代器与生成器 转自:浪子燕青 http://www.langzi.fun/迭代器与生成器.html 概念 迭代器:是访问数据集合内元素的一种方式,一般用来遍历数据,但 ...

  6. python列表生成器语法_python列表生产式和生成器

    1.列表生成式:通过简洁的语法可以对一组元素进行过滤 格式:[exp for val in collection if condition] 例子1: a = [x*xforxinxrange(1,1 ...

  7. python 列表生成器 获取文件列表

    g = os.walk(list_path) # b=[ j for j in g] self.img_files = ['%s\\%s' % (i[0], j) for i in g if i[0] ...

  8. python列表生成器二维筛选_如何加速Eratosthenes python列表生成器的筛选

    编辑:已经意识到在SO上有很多优化,但很少有其他人为主筛算法解释它们,因此很难让初学者或第一次算法创建者接近它们.所有解决方案都将在python中,以便在速度和优化的同一页面上.这些解决方案将逐渐变得 ...

  9. python使用生成器生成浮点数列表、使用生成器生成(正)负的浮点数列表

    python使用生成器生成浮点数列表.使用生成器生成(正)负的浮点数列表 目录 pyth

  10. 快速记忆python函数-【速学速记】Python 列表生成式的进化:生成器

    原标题:[速学速记]Python 列表生成式的进化:生成器 1. 列表生成式的缺点 通过列表生成式,我们可以直接创建一个列表.但是,内存数量有限,列表容量肯定不能超过内存大小. 再有,创建一个包含10 ...

最新文章

  1. Java常用命令及Java Dump
  2. C++ 操作符优先级
  3. 数据分析实战-PUBG数据集EDA
  4. 在ASP.NET Core中使用EPPlus导入出Excel文件
  5. Android activity启动模式
  6. 静态连接和动态链接有什么区别?
  7. 【报告分享】2019全球住宅报告.pdf(附下载链接)
  8. 如何确保使用jdk8编译后的class能够在jdk7上运行?
  9. [转载] python多重继承初始化_关于python多重继承初始化问题
  10. eclipse 改java版本_修改eclipse工程jdk版本
  11. db4o java_DB4O 社区版 8.1.3 发布,面向对象数据库
  12. Linux上tomcat运行内存溢出,linux中tomcat内存溢出解决办法
  13. 【总结】编程语言的分类
  14. html多个div横向排列居中,多个div垂直居中横向排列的示例分析
  15. ubuntu18.04设置静态IP地址
  16. c语言url下载文件,C/C++轻松实现文件下载
  17. c语言d是什么意思,c d是什么意思
  18. 一个大二前端的2017自我总结
  19. 阿里云服务器Ubuntu系统搭建mqtt服务器
  20. 微信PC端或将支持自动登录?网友直呼好家伙

热门文章

  1. 微软白皮书:47页报告详解中国芯片设计云技术
  2. 麦肯锡:企业数字化转型不要被技术“绑架”
  3. 在物理学的语言里,“生命”是什么?
  4. 美国科学家成功恢复老年人工作记忆,望奠定认知干预疗法基础
  5. 智能硬件这5大领域竞争升级,将迎发展新模式
  6. 一文读懂:深扒人脸识别60年技术发展史
  7. 机器学习 TOP 10 必读论文 | 资源
  8. 程序员因拒绝带电脑回家被开除,获赔 19.4 万元
  9. 三星教父逝世!李健熙缔造的商业传奇和争议人生
  10. 腾讯云发布全链路数据开发平台WeData,大数据开发迈入新时代