学了其他语言,对Python的列表解析之类的,没怎么用过。。总是习惯性的用for循环。后来看到大家都用列表解析,效率比直接for循环高一下。于是就在网上查了查资料。
其实并不难, 只是想不想的起来用----
先看一个基本的例子
a = [x+2 for x in range(10)] print a # [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]##输出的结果:
列表解析:在解释器中以c语言的速度来运行,比python的for循环代码在pvm中运行要快的多。
依次把列表里的内容取出来,赋值给最左边的x,然后执行x+2的操作,
并且把执行好的结果保存在列表里。等range(10)迭代完以后就新生成了一个列表,结果就是[2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
同时,这也是建立python 列表的一个方法,但是效率要快。
同时在列表解析中可以加入运算:
[(x,y) for x in range(5) if x % 2==0 for y in range(5) if y % 2 ==1] [(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]嵌套列表:
>>> rect [[1, 2, 3], [3, 4, 5]] >>> [row[1] for row in rect] #访问指定列中的元数 [2, 4] >>> rect[1] #访问指定行的元素 [3, 4, 5] >>> [rect[row][1] for row in range(2)] #访问指定位置元数 [2, 4]