创新互联Python教程:如何使用列表解析

根据已有列表,高效创建新列表的方式。

列表解析是Python迭代机制的一种应用,它常用于实现创建新的列表,因此用在[]中。

语法:

[expression for iter_val in iterable]
[expression for iter_val in iterable if cond_expr]

实例展示:

  要求:列出1~10所有数字的平方
 2####################################################
 31、普通方法:
  >>> L = []
  >>> for i in range(1,11):
 ...     L.append(i**2)
  ... 
  >>> print L
  [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
 ####################################################
 2、列表解析
 >>>L = [ i**2 for i in range(1,11)]
 >>>print L
 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
 1 要求:列出1~10中大于等于4的数字的平方
 2 ####################################################
 3 1、普通方法:
 4 >>> L = []
 5 >>> for i in range(1,11):
 6 ...     if i >= 4:
 7 ...         L.append(i**2)
 8 ... 
 9 >>> print L
10 [16, 25, 36, 49, 64, 81, 100]
11 ####################################################
12 2、列表解析
13 >>>L = [ i**2 for i in range(1,11) if i >= 4 ]
14 >>>print L
15 [16, 25, 36, 49, 64, 81, 100]
 1 要求:列出1~10所有数字的平方除以2的值
 2 ####################################################
 3 1、普通方法
 4 >>> L = []
 5 >>> for i in range(1,11):
 6 ...     L.append(i**2/2)
 7 ... 
 8 >>> print L
 9 [0, 2, 4, 8, 12, 18, 24, 32, 40, 50]
10 ####################################################
11 2、列表解析
12 >>> L = [i**2/2 for i in range(1,11) ]
13 >>> print L
14 [0, 2, 4, 8, 12, 18, 24, 32, 40, 50]
1 要求:实现两个列表中的元素逐一配对。
 2 1、普通方法:
 3 >>> L1 = ['x','y','z']
 4 >>> L2 = [1,2,3]      
 5 >>> L3 = []
 6 >>> for a in L1:
 7 ...     for b in L2:
 8 ...         L3.append((a,b))
 9 ... 
10 >>> print L3
11 [('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]
12 ####################################################
13 2、列表解析:
14 >>> L1 = ['x','y','z']
15 >>> L2 = [1,2,3]
16 L3 = [ (a,b) for a in L1 for b in L2 ]
17 >>> print L3
18 [('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

本文标题:创新互联Python教程:如何使用列表解析
网址分享:http://www.shufengxianlan.com/qtweb/news49/378899.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联