Python 基础 —— 循环技术

本文介绍了Python中遍历二维矩阵的两种方法,包括直接访问矩阵元素和根据索引访问,通过实例展示了如何逐行逐列遍历矩阵,并提供了Python3.4的帮助文档链接作为参考。
摘要由CSDN通过智能技术生成
    简单谈谈 Python 中容器的遍历和一下小技巧。

1、遍历单个容器
     下面代码遍历一个 List 结构,同样适用于 Tuple、Set 结构类型
>>> x = [1, 2, 3, 'p' , 'y']
>>> for v in x:
...     print(x)
...
1
2
3
p
y

     遍历字典 Dict 结构也是一样的方法,注意区分 Key-Value
>>> y = {'a':11, 'b':22}
>>> y
{'b': 22, 'a': 11}
>>> for v in y:
...     print(v)
...
b
a
>>> for v in y.keys():
...     print(v)
...
b
a
>>> for v in y.values():
...     print(v)
...
22
11
>>> for v in y.items():
...     print(v)
...
('b', 22)
('a', 11)

2、同时遍历多个容器
     借助 zip() 函数可以将多个容器集中在一起同时遍历,对于某些场合十分有效,zip() 是 Python 的内建函数,可以随时使用。
>>> x
[1, 2, 3]
>>> y
{'c', 'b', 'a'}
>>> for i, j in zip(x, y):  # 用i,j分别遍历容器x和y中的元素,一旦其中某个容器遍历结束循环终止。
...     print(i, j)
...
1 c
2 b
3 a

>>> z = (5, 6, 7)
>>> for i,j,k in zip(x,y,z):     # 同时遍历三个容器
...     print(i, j, k)
...
1 c 5
2 b 6
3 a 7

3、循环技巧
     利用 Python 内建函数 reversed() sorted() set() enumerate() 函数可以实现一些实用的技巧。

获取 1-10的逆序序列
>>> for i in reversed(range(10)):
...     print(i+1, end = ' ')
...
10 9 8 7 6 5 4 3 2 1

获取有序的字符序列
>>> for c in sorted('hello world'):
...     print(c, end = ' ')
...
  d e h l l l o o r w

去除重复数据
>>> for x in set([1,1,2,2,2,3,3]):
...     print(x, end = ' ')
...
1 2 3


4、遍历技巧

    遍历矩阵是常见的操作,包括逐行遍历和逐列遍历,下面是一个二维矩阵的遍历:

>>> x = [[1,2,3], [4,5,6], [7,8,9]]

直接访问矩阵元素

>>> for row in x:
...     for e in row:
...             print(e, end=' ')
...
1 2 3 4 5 6 7 8 9

根据索引访问

>>> for i in range(len(x)):
...     for j in range(len(x[0])):
...             print(x[i][j], end=' ')
...
1 2 3 4 5 6 7 8 9 >>>


5、注意事项
     在循环遍历某个容器的同时,如果需要修改容器,最好不要直接在原始容器上进行修改,否则,会发生不可预料的结果。一个好的方法是在遍历容器前先拷贝一份原始数据,然后在这份拷贝的数据中进行遍历,需要修改时,直接修改原始容器中的数据,这样可以保证你当前正在遍历的容器与你最初所见相同。
     使用 List 容器的 [:] 操作,该操作会返回一份当前容器的副本。
>>> word = ['a', 'b', 'c']
>>> for v in word[:]:
...     word.append('q')
...
>>> word

['a', 'b', 'c', 'q', 'q', 'q']

参考:

[1] Python3.4 帮助文档 https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值