|
|
|
|
移动端

2.3.2 循环(3)

《自学Python:编程基础、科学计算及数据分析》第2章Python 基础,在本章中,我们将学习Python 语言的基本使用,掌握Python 的基本使用方法,为后续的学习打下基础。本节为大家介绍循环。

作者:李金来源:机械工业出版社|2018-05-03 18:05

人工智能+区块链的发展趋势及应用调研报告


2.3.2 循环(3)

列表推导式的基本形式是使用一个 for循环,对序列的元素依次进行操作得到另一个序列。在上面的例子中,这个操作是对 values中的每个值进行平方。列表推导式的最后还可以加入判断语句,实现对序列中的元素进行筛选。

例如,只保留列表中不大于 10的数的平方:

  1. In [35]: [x ** 2 for x in values if x <= 10] Out[35]: [100, 16, 49] 

字典也可以用推导式生成,只不过要写成“k: v”键值对的形式:

  1. In [36]: {x: x**2 for x in values if x <= 10} Out[36]: {10: 100, 4: 16, 7: 49} 

7. enumerate()和 zip()函数

在 Python中,enumerate()函数和zip()函数常与for循环一起使用。

for循环会直接遍历容器类型中的元素:

  1. In [37]: x = [2, 4, 6] In [38]: for n in x:  
  2.     ...:  print n  
  3.     ...:  
  4. 2  

有时候,我们希望在得到这些元素的同时,也得到相应的位置信息。

Python提供了enumerate()的函数来实现这样的功能,其用法为:

  1. In [39]: for i, n in enumerate(x):  
  2.     ...: print "pos {} is {}".format(i, n)  
  3.     ...: pos 0 is 2 pos 1 is 4 pos 2 is 6 

enumerate()函数在 for循环的每一轮会将一个(index, value)组成的元组分别传给 i和n。如果只需要位置信息,我们可以利用range()函数和len()函数相结合:

  1. In [40]: for i in range(len(x)):  
  2.     ...:  print i  
  3.     ...:  
  4. 0  
  5. 1  

在 for循环中另一个常用的函数是zip()函数,用法为:

  1. zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)] 

它接受多个序列,返回一个元组列表。该列表的第 i个元素是一个元组,由所有序列的第 i个元素组成:

  1. In [41]: y = ['a', 'b', 'c']   
  2. In [42]: zip(x, y)   
  3. Out[42]: [(2, 'a'), (4, 'b'), (6, 'c')] 

我们可以这样用 for循环迭代zip()函数返回的结果:

  1. In [43]: for i, j in zip(x, y):    ...: print i, j    ...:  
  2. 2 a 4 b 6 c 

对于zip()函数来说:

接受的序列可以是列表,也可以是其他类型的序列;

可以接受两个或以上的序列;

当序列的长度不同时,zip()函数返回的长度与序列中最短的一个相同。例如,接受第三个序列,字典z:

  1. In [44]: z = {1, 2, 3, 4, 5}  
  2. In [45]: zip(x, y, z)   
  3. Out[45]: [(2, 'a', 1), (4, 'b', 2), (6, 'c', 3)] 

如果参数是字典,zip()函数会保留它的键:

  1. In [46]: w = {1: 'one', 2: 'two', 3: 'three'}   
  2. In [47]: zip(x, w)   
  3. Out[47]: [(2, 1), (4, 2), (6, 3)]  

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Tomcat与Java Web开发技术详解

本书详细介绍了在最新Tomcat 5版本上开发Java Web应用的各种技术。主要内容包括:Tomcat和Java Web开发的基础知识,Java Web开发的高级技术...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊