- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章举例讲解如何在Python编程中进行迭代和遍历由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
迭代 首先理解下什么是迭代,python中所有从左往右扫面对象的方式都是可迭代的 。
有哪些方式是可迭代的
1.文件操作 。
我们读取文件的时候,会用到一个readline()方法,其实它就是一个迭代器,它会返回当前的数据,然后自动的调用内置的next()方法来让文件的读取头自动的移动到当前的下面一行,准备下次的读取,到达文件末尾时,就会返回空字符串. 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
>>> f
=
open
(
'hello.py'
)
>>> f.readline()
'#!/usr/bin/python2.5\n'
>>> f.readline()
'print "hello.word!"\n'
>>> f.readline()
'\n'
>>> f.readline()
''
>>>
for
i
in
open
(
'hello.py'
):
...
print
(i)
...
#!/usr/bin/python2.5
print
"hello.word!"
|
用上面这样方式来读取文件内容的话,速度很快,内存占用也比较低,特别适合操作大文件. 。
下面这个方式适合操作一些小的文件,速度和效率没有上面的好,所以建议以后操作文件的话,尽量用上面的.
1
2
3
4
5
|
>>>
for
i
in
open
(
'hello.py'
).readlines():
...
print
i
...
#!/usr/bin/python2.5
print
"hello.word!"
|
read方法和readline方法, read()方法把整个文件的内容放到字符串里 readline()方法则把文件的内容按照行为单位放到列表里。 一般要替换文件里的某个字符的话,最好有readline,然后用循环把一行一行内容循环出来,再查找替换,这样效率比整个读到一个字符串里来查找匹配效果更高.
2 for循环 。
例如
1
2
3
|
>>>
for
i
in
range
(
5
):
...
print
(i)
...
|
它中间处理的过程和下面的是一样的:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>>> L
=
[
0
,
1
,
2
,
3
,
4
]
>>> I
=
iter
(L)
>>> I.
next
()
0
>>> I.
next
()
1
>>> I.
next
()
2
>>> I.
next
()
3
>>> I.
next
()
4
>>> I.
next
()
|
1
2
3
|
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
|
每次调用迭代器调用next()方法返回结果,并让文件指针往下移动一行,最后已StopIteration异常结束迭代.
3.列表解析
相比python for循环速度会快很多 。
例如
1
2
|
>>> L
=
[x
+
10
for
x
in
range
(
10
)]
>>> L
|
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19] python会在解释器里对range(10)进行迭代,依次把列表里的内容取出来,赋值给最左边的x,然后执行x+10的操作, 并且把执行好的结果保存在列表里。等range(10)迭代完以后就新生成了一个列表,结果就是[10,11,12,13,14,15,16,17,18,19] 从上面可以看出,这也是建立python 列表的一个方法.
上面例子也可以用for循环来实现. 。
1
2
3
4
5
6
|
>>> res
=
[]
>>>
for
x
in
range
(
10
):
... res.append(x
+
10
)
...
>>> res
[
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
]
|
从上面可以看出,python列表解析比手动的for 更加精简,而且运行的更快(往往速度回快一倍),因为他们的迭代在解析器内部是以C语言的速度执行的,而不是以手动python代码执行的,特别对于较大的数据集合,这是使用列表解析的一个主要的性能优点. 。
遍历 1.通过序列取元素的方法进行遍历 。
1
|
root@10.1.6.200:python
# vim 3.py
|
1
2
3
4
5
6
7
|
#!/usr/bin/python2.5
for
i
in
'hello'
:
#序列里的字符串
print
i,
y
=
[
1
,
2
,
3
,
4
,
5
,
6
]
#列表
for
i
in
y:
print
i,
|
1
|
root@10.1.6.200:python
# python 3.py
|
1
|
h e l l o 1 2 3 4 5 6
|
2.通过序列本身偏移指数(索引)的方法进行遍历 。
也就是迭代序列索引,注:迭代,重复执行一条指令. 。
1
|
root@10.1.6.200:python
# vim 3.py
|
1
2
3
4
5
6
7
8
|
#!/usr/bin/python2.5
x
=
'hello'
for
i
in
range
(
len
(x)):
print
x[i]
y
=
[
1
,
2
,
3
,
4
,
5
,
6
]
for
i
in
range
(
len
(y)):
print
y[i],
|
1
|
root@10.1.6.200:python
# python 3.py
|
1
|
h e l l o 1 2 3 4 5 6
|
字典有2种方式取到其值
1.先取字典key,在取索引的值 。
1
|
root@10.1.6.200:python
# vim 5.py
|
1
2
3
4
|
#!/usr/bin/python2.5
z
=
{
1
:
'a'
,
2
:
'b'
,
3
:
'c'
}
for
i
in
z:
print
z[i]
|
。
1
|
root@10.1.6.200:python
# python 5.py
|
1
2
3
|
a
b
c
|
2.通过字典items方法,获取所有键值对,在利用元组拆分的方法获得对应值. 。
1
|
root@10.1.6.200:python
# cat 5.py
|
1
2
3
4
5
|
#!/usr/bin/python2.5
z
=
{
1
:
'a'
,
2
:
'b'
,
3
:
'c'
}
print
z.items()
for
m,n
in
z.items():
print
m,n
|
1
|
root@10.1.6.200:python
# python 5.py
|
1
2
3
4
|
[(1, 'a'), (2, 'b'), (3, 'c')]
1 a
2 b
3 c
|
最后此篇关于举例讲解如何在Python编程中进行迭代和遍历的文章就讲到这里了,如果你想了解更多关于举例讲解如何在Python编程中进行迭代和遍历的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
1、流程控制语句主要有if、ii...else、elseif(有时也可以写成else if)、switch四种。 PHP中语句格式为: if(条件满足) {执行语句} if(条件满足) {执行
目录 DFS初步概念 DFS例题-迷宫游戏 题目描述 输入输出格式 输入输出样例
This question两年前被问到,但它提到的资源要么不是很有帮助(恕我直言),要么链接不再有效。 必须有一些很好的教程才能理解 Phaser .我已经阅读了 javadoc,但我的眼睛呆滞了,因
This question两年前被问到,但它提到的资源要么不是很有帮助(恕我直言),要么链接不再有效。 必须有一些很好的教程才能理解 Phaser .我已经阅读了 javadoc,但我的眼睛呆滞了,因
这个正则出自这个网站 http://www.regexlab.com/zh/regref.htm 正向预搜索:"(?=xxxxx)","(?!xxxxx)"
chr(9)、chr(10)、chr(13)、chr(32)、chr(34) 所有关于 ASCII码的表格:[url]http://www.asciitable.com/[/url] chr(13)
我是一名优秀的程序员,十分优秀!