首页 > 代码库 > python-列表生成器
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-列表生成器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。