016、循环
本文最后更新于 68 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

循环

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

while 循环

while <condition>:
    <statesments>

Python会循环执行,直到不满足为止。

例如,计算数字0到1000000的和:

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

for 循环

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

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

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

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

continue 语句

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

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

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

break 语句

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

command_list = ['start', 
                'process', 
                'process',
                'process', 
                'stop', 
                'start', 
                'process', 
                'stop']
for command in command_list:
    if command == 'stop':
        break
    print(command)
start
process
process
process

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

else语句

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

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

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
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

列表推导式

循环可以用来生成列表:

values = [10, 21, 4, 7, 12]
squares = []
for x in values:
    squares.append(x**2)
squares
[100, 441, 16, 49, 144]

列表推导式可以使用更简单的方法来创建这个列表:

squares = [x**2 for x in values]

还可以在列表推导式中加入条件进行筛选:

squares = [x**2 for x in values if x <= 10]
squares
[100, 16, 49]

也可以使用推导式生成集合和字典:

square_set = {x**2 for x in values if x <= 10}
square_set
{16, 49, 100}
square_dict = {x: x**2 for x in values if x <= 10}
square_dict
{10: 100, 4: 16, 7: 49}

计算上面例子中生成的列表中所有元素的和:

sum([x**2 for x in values if x <= 10])
165

括号可以省略:

sum(x**2 for x in values if x <= 10)
165

第二种写法会减少一次列表的生成,速度会更快一些。

谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇