python-列表生成器
列表生成式:使用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-列表生成器相关推荐
- python:列表生成器
今天来聊聊python的列表生成器 最简单的: [x for x in range(10)] 得到的结果是: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 稍微复杂一点的: [x fo ...
- python列表生成器语法_Python 列表生成式\生成器
Python 列表生成式+生成器 一.列表生成式 1.什么是列表生成器 一种可以便捷地生成列表的表达式,有时候可以替换list.append(变量) 2.需求. 如何将列表中的每个数据都加1 列表:d ...
- python列表生成器
列表生成器 列表生成器为创建列表提供了一种简洁的方式.其语法为 li = [f(var) for var in iterable if condition] f(var)为变量var的表达式,f(va ...
- python列表生成器语法_python语法_列表生成器_生成器_迭代器_异常捕获
列表生成式 a = [x for x in range(10)] print(a) x 可进行操作 a = [x*2 for x in range(10)] print(a) x甚至可以为函数, de ...
- python 列表生成器放while_史上最全 Python 迭代器与生成器
原标题:史上最全 Python 迭代器与生成器 转自:浪子燕青 http://www.langzi.fun/迭代器与生成器.html 概念 迭代器:是访问数据集合内元素的一种方式,一般用来遍历数据,但 ...
- python列表生成器语法_python列表生产式和生成器
1.列表生成式:通过简洁的语法可以对一组元素进行过滤 格式:[exp for val in collection if condition] 例子1: a = [x*xforxinxrange(1,1 ...
- 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] ...
- python列表生成器二维筛选_如何加速Eratosthenes python列表生成器的筛选
编辑:已经意识到在SO上有很多优化,但很少有其他人为主筛算法解释它们,因此很难让初学者或第一次算法创建者接近它们.所有解决方案都将在python中,以便在速度和优化的同一页面上.这些解决方案将逐渐变得 ...
- python使用生成器生成浮点数列表、使用生成器生成(正)负的浮点数列表
python使用生成器生成浮点数列表.使用生成器生成(正)负的浮点数列表 目录 pyth
- 快速记忆python函数-【速学速记】Python 列表生成式的进化:生成器
原标题:[速学速记]Python 列表生成式的进化:生成器 1. 列表生成式的缺点 通过列表生成式,我们可以直接创建一个列表.但是,内存数量有限,列表容量肯定不能超过内存大小. 再有,创建一个包含10 ...
最新文章
- Java常用命令及Java Dump
- C++ 操作符优先级
- 数据分析实战-PUBG数据集EDA
- 在ASP.NET Core中使用EPPlus导入出Excel文件
- Android activity启动模式
- 静态连接和动态链接有什么区别?
- 【报告分享】2019全球住宅报告.pdf(附下载链接)
- 如何确保使用jdk8编译后的class能够在jdk7上运行?
- [转载] python多重继承初始化_关于python多重继承初始化问题
- eclipse 改java版本_修改eclipse工程jdk版本
- db4o java_DB4O 社区版 8.1.3 发布,面向对象数据库
- Linux上tomcat运行内存溢出,linux中tomcat内存溢出解决办法
- 【总结】编程语言的分类
- html多个div横向排列居中,多个div垂直居中横向排列的示例分析
- ubuntu18.04设置静态IP地址
- c语言url下载文件,C/C++轻松实现文件下载
- c语言d是什么意思,c d是什么意思
- 一个大二前端的2017自我总结
- 阿里云服务器Ubuntu系统搭建mqtt服务器
- 微信PC端或将支持自动登录?网友直呼好家伙