Python学习笔记——(2)Python中的遍历

1 概述

  • Python中最常用的遍历是基于for循环的遍历方式,但是这个forc++中的for语句的使用有些差别
  • 另外一种遍历方式是基于while循环的遍历

2 基于for循环的遍历

2.1 for in语句

  • 该语句相比于c/c++中的for语句,性能有所下降,但是其更容易编写且功能更加强大
  • 下面展示了几种主要数据结构的遍历
>>> print(a,b,c)
{'123', '456'} [1, 2, 3, 4] (1, 2, 3, 4, [1, 3, 2, 1])
>>> for i in a:
...     print(i)
...     
123
456
>>> for i in b:
...     print(i)
...     
1
2
3
4
>>> for i in c:
...     print(i)
...         
1
2
3
4
[1, 3, 2, 1]

2.2 遍历元素的同时,对索引进行遍历

  • Python中引入enumerate对索引(index)进行遍历,具体的使用方法如下:
>>> b
[1, 2, 3, 4]
>>> for i, k in enumerate(b):
...     print('id=', i, 'value=', k)
...     
id= 0 value= 1
id= 1 value= 2
id= 2 value= 3
id= 3 value= 4

2.3 对字典(dict)键值对的遍历

  • for语句中的变量可以存在多个,这尤其体现在对字典的遍历中。
>>> d
{1: 'a', 2: 'b', 'c': 3}
>>> for k in d:
...     print(k)
...     
1
2
c
>>> for k, v in d.items():  # 记得要加items()
...     print(k,':', v)
...     
1 : a
2 : b
c : 3
  • 当加入enumerate对索引页遍历的时候,要注意在k,v两边加小括号。因为enumerate传回的参数有两个:索引和元素,所以如果for循环的变量写作i, k, v时,会报参数过多的错误。
>>> for i, (k, v) in enumerate(d.items()):
...     print(i,k,v)
...     
0 1 a
1 2 b
2 c 3

3 基于while循环的遍历

  • while循环通常用于复杂条件的循环
>>> i, n, a, b = 0, 10, 1, 1
>>> while i < n:
...     print(a, end = ',' if i < n-1 else '\n')
...     a, b, i = b, a+b, i+1
...     
1,1,2,3,5,8,13,21,34,55
  • 上面的例子是快速生成一个斐波那契数列
  • 注意print后面一行的赋值语句,会首先对等号右侧的表达式进行计算,然后将计算结果隐式封装在一个元组(tuple)中,分别赋值给等号左侧的三个变量。

4 构造数据时的隐式遍历

  • 相对于显式遍历,隐式遍历虽然没有明确的调用for语句或while语句,但是仍然会执行遍历操作。

4.1 显式遍历和隐式遍历

>>> a = range(1, 11)
>>> a
range(1, 11)
>>> a_set = set(a)  # 隐式遍历
>>> a_set
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}    
>>> for i in a:  # 显式遍历
...     print(i)
...     
1
2
3
4
5
6
7
8
9
10

4.2 隐式遍历与非遍历

  • 由于隐式遍历的存在,可能会出现意料之外的情况,如下:
>>> a = "This is a test string."
>>> a_set_1 = set(a)  # 隐式遍历
>>> a_set_2 = {a}  # 非遍历
>>> a_set_1, a_set_2
({'s', 'i', 'e', 't', '.', 'T', ' ', 'n', 'g', 'h', 'r', 'a'}, {'This is a test string.'})

下一小节:Python中的逻辑运算与数据过滤

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值