返回介绍

01. Python 工具

02. Python 基础

03. Numpy

04. Scipy

05. Python 进阶

06. Matplotlib

07. 使用其他语言进行扩展

08. 面向对象编程

09. Theano 基础

10. 有趣的第三方模块

11. 有用的工具

12. Pandas

循环

发布于 2022-09-03 20:46:12 字数 7877 浏览 0 评论 0 收藏 0

循环的作用在于将一段代码重复执行多次。

while 循环

while <condition>:
    <statesments>

Python会循环执行<statesments>,直到<condition>不满足为止。

例如,计算数字01000000的和:

In [1]:

i = 0
total = 0
while i < 1000000:
    total += i
    i += 1
print total
499999500000

之前提到,空容器会被当成 False ,因此可以用 while 循环来读取容器中的所有元素:

In [2]:

plays = set(['Hamlet', 'Macbeth', 'King Lear'])
while plays:
    play = plays.pop()
    print 'Perform', play
Perform King Lear
Perform Macbeth
Perform Hamlet

循环每次从 plays 中弹出一个元素,一直到 plays 为空为止。

for 循环

for <variable> in <sequence>:
    <indented block of code>

for 循环会遍历完<sequence>中所有元素为止

上一个例子可以改写成如下形式:

In [3]:

plays = set(['Hamlet', 'Macbeth', 'King Lear'])
for play in plays:
    print 'Perform', play
Perform King Lear
Perform Macbeth
Perform Hamlet

使用 for 循环时,注意尽量不要改变 plays 的值,否则可能会产生意想不到的结果。

之前的求和也可以通过 for 循环来实现:

In [4]:

total = 0
for i in range(100000):
    total += i
print total
4999950000

然而这种写法有一个缺点:在循环前,它会生成一个长度为 100000 的临时列表。

生成列表的问题在于,会有一定的时间和内存消耗,当数字从 100000 变得更大时,时间和内存的消耗会更加明显。

为了解决这个问题,我们可以使用 xrange 来代替 range 函数,其效果与range函数相同,但是 xrange 并不会一次性的产生所有的数据:

In [5]:

total = 0
for i in xrange(100000):
    total += i
print total
4999950000

比较一下两者的运行时间:

In [6]:

%timeit for i in xrange(1000000): i = i
10 loops, best of 3: 40.7 ms per loop

In [7]:

%timeit for i in range(1000000): i = i
10 loops, best of 3: 96.6 ms per loop

可以看出,xrange 用时要比 range 少。

continue 语句

遇到 continue 的时候,程序会返回到循环的最开始重新执行。

例如在循环中忽略一些特定的值:

In [8]:

values = [7, 6, 4, 7, 19, 2, 1]
for i in values:
    if i % 2 != 0:
        # 忽略奇数
        continue
    print i/2
3
2
1

break 语句

遇到 break 的时候,程序会跳出循环,不管循环条件是不是满足:

In [9]:

command_list = ['start', 
                'process', 
                'process',
                'process', 
                'stop', 
                'start', 
                'process', 
                'stop']
while command_list:
    command = command_list.pop(0)
    if command == 'stop':
        break
    print(command)
start
process
process
process

在遇到第一个 'stop' 之后,程序跳出循环。

else语句

if 一样, whilefor 循环后面也可以跟着 else 语句,不过要和break一起连用。

  • 当循环正常结束时,循环条件不满足, else 被执行;
  • 当循环被 break 结束时,循环条件仍然满足, else 不执行。

不执行:

In [10]:

values = [7, 6, 4, 7, 19, 2, 1]
for x in values:
    if x <= 10:
        print 'Found:', x
        break
else:
    print 'All values greater than 10'
Found: 7

执行:

In [11]:

values = [11, 12, 13, 100]
for x in values:
    if x <= 10:
        print 'Found:', x
        break
else:
    print 'All values greater than 10'
All values greater than 10

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文