Python学习之路——控制语句,迭代器, 列表解析

条件语句

if

都是大家的老朋友了,直接代码示例,简单易上手:

<span style="font-size:18px;">>>> lang = "python"
>>> if lang == "C":
...     print "C language"
... elif lang == "Java":
...     print "Java language"
... else:
...     print "Python language"
...
Python language
>>> </span><span style="font-size:14px;">
</span>

循环语句

while

直接上代码,就是干

<span style="font-size:18px;">>>> count = 0
>>> while(count < 9):
...     print 'the index is:', count
...     count += 1
...
the index is: 0
the index is: 1
the index is: 2
the index is: 3
the index is: 4
the index is: 5
the index is: 6
the index is: 7
the index is: 8
>>> </span><span style="font-size:14px;">
</span>

for

不解释,直接上

<span style="font-size:18px;">>>> game = ['LOL', 'GT', 'CSOL']
>>> for g in game:
...     print 'you play %s' % game
...
you play ['LOL', 'GT', 'CSOL']
you play ['LOL', 'GT', 'CSOL']
you play ['LOL', 'GT', 'CSOL']

>>> for index in range(len(game)):
...     print 'you play %s' % game[index]
...
you play LOL
you play GT
you play CSOL
>>> </span><span style="font-size:14px;">
</span>

break, continue, pass

break: 熟悉C的朋友都熟悉,打破循环

continue: 跳过后面的语句直接进行下一次循环

pass:空语句, 就比如C中空的大括号

while-else, for-else(还是挺方便的)

当循环和else语句一起使用时(描述不是很准确,看代码就懂了),循环若正常退出,则会运行else中的语句。如何循环是通过break语句结束的,那么else中的语句也将跳过。

下面引用书上的代码:

maxFact.py

<span style="font-size:18px;">def showMaxFactor(num):
        count = num/2
        while count > 1:
                if num % count == 0:
                        print 'largest factor of %d is %d' % (num, count)
                        break;
                count -= 1
        else:
                print num, 'is prime'

for eachNum in range(10,21):
        showMaxFactor(eachNum)</span><span style="font-size:14px;">
</span>

运行结果:

<span style="font-size:18px;">linux-ne7w:~/python> python maxFact.py
largest factor of 10 is 5
11 is prime
largest factor of 12 is 6
13 is prime
largest factor of 14 is 7
largest factor of 15 is 5
largest factor of 16 is 8
17 is prime
largest factor of 18 is 9
19 is prime
largest factor of 20 is 10</span><span style="font-size:14px;">
</span>

迭代器

迭代器为类序列对象提供了一个类序列的接口。迭代器非常灵活,它可以迭代那些表现出序列行为的对象。例如字典的键,一个文件的所有行等等。

  • 为什么要迭代器:
  • 提供了可扩展的迭代器接口
  • 对列表迭代提供了性能上的增强
  • 在字典迭代中性能提升
  • 创建真正的迭代接口,而不是原来的随机对象访问
  • 与所有已经存在的用户定义的类以及扩展的模拟序列和映射的对象向后兼容
  • 迭代非序列集合时,可以创建更简洁可读的代码

怎么迭代:

首先可以用iter()函数返回被迭代对象的迭代器,然后调用迭代器的next()方法获取下一项。当所有项都获取了,会引发一个StopIteration异常,告诉调用者迭代完成。迭代器是单向通行的,只能向后移动。

使用迭代器:

<span style="font-size:18px;">>>> t = (123, 'text', 66.66)
>>> t
(123, 'text', 66.66)
>>> i = iter(t)
>>> i.next()
123
>>> i.next()
'text'
>>> i.next()
66.66
>>> i.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> </span><span style="font-size:14px;">
</span>

若在实际应用中,这样写实在够呛。

python实在太智能,在实际的应用中,python会帮你处理。看一个迭代文件的例子

<span style="font-size:18px;">>>> f = open('text.txt', 'r')
>>> for eachLine in f:
...      print eachLine,
...
This is just for a test

everyone should learn programming, programming teach you thinking.

forget my poor english.haha.</span><span style="font-size:14px;">
</span>

for循环会自动调用迭代器的next()方法,并处理StopIteration异常。

警告:在迭代可变对象的时候不要修改它,,到时候就boom,程序崩溃了。

列表解析

列表解析(List comprehensions)来自于函数式编程语言Haskell。它用来动态的创建列表。列表解析的语法:

[expr for iter_var in iterable]

按我的理解(生成列表元素),它等价于:

for iter_var in iterable:

expr

看几个例子:

<span style="font-size:18px;">[x ** 2 for x in range(6)]
[0, 1, 4, 9, 16, 25]
>>> seq = [11, 10, 89, 32, 43, 22, 55, 23, 21, 32]
>>> [x for x in seq if x % 2]
[11, 89, 43, 55, 23, 21]</span>
<span style="font-size:18px;">>>> [(x+1,y+1) for x in range(3) for y in range(4)]
[(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3), (3, 4)]
>>> </span><span style="font-size:14px;">
</span>

生成器表达式

生成器表达式是列表解析的一个扩展。目前还不是很熟悉,就先这样吧。

时间: 2024-11-06 05:45:58

Python学习之路——控制语句,迭代器, 列表解析的相关文章

Python学习之路8?迭代器协议和生成器

一 什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法) 3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象. 二 python中强大的for循环机制 for循环的本质:循环所有对象,全

Python 学习之路(二)

Python 学习之路(二) 以下所用的是Python 3.6 一.条件语句 简单判断 1 if 判断条件: 2 执行语句-- 3 else: 4 执行语句-- 复杂判断 1 if 判断条件1: 2 执行语句1-- 3 elif 判断条件2: 4 执行语句2-- 5 elif 判断条件3: 6 执行语句3-- 7 else: 8 执行语句4-- 二.循环语句 2.1 while语句 和其他语言一样,不同的是多了else语句.在 python 中,while - else 在循环条件为 false

Python学习之路(第一周)

走上软件开发之路已经三个年头.我本人是android原生开发出生.期间由于工作的需要以及开发的趋势发展,也走上混合开发的道路,现在主要运用ionic框架进行移动端app的开发.但是未来的互联网发展趋势还是大数据+人工智能.所以现在学习Python就很有必要.这里就不介绍Python语言的优劣了,想具体了解的小伙伴可以自行度娘吧. 好了,直接步入正题. 本博客主要记录自己接下来几个月的Python学习之路,能力有限,期间有什么表达不对的欢迎大家留言区批评指正! Python版本:Python3.5

Python学习之路

Python学习之路 目录 Python学习之路[第一篇]:流程控制,用户交互,语法要求,变量,字符,注释,模块导入的使用 Python学习之路[第二篇]:文件,字符串,列表,元组,字典,集合的使用 更新中...

Python学习之路-装饰器&生成器&正则表达式

装饰器 通俗的讲,装饰器就是在不改变源代码基础上,给源代码增加新功能. 不改变函数的源代码.调用方式.返回值等,给函数增加新功能. 经典案例:登录装饰器, def login_decorator(func):     def inner():         if USER_TEMP["status"] == False:             print("\033[31;1m用户未登录,请先登录\033[0m")             login_atm()

Python学习系列(四)(列表及其函数)

Python学习系列(四)(列表及其函数) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) Python学习系列(三)(字符串) 一.基本概念 1,列表是什么? 一种序列型数据类型,一有序数据集合用逗号间隔用方括号括起来. 2,几种访问形式 1)索引访问,语法结构:list_name[index].注意,列表的索引值从0开始.例如: 1 >>> li=[1,2,3,4,5] 2 >>> print li[2],li[0] 3 3 1 删除

Python 学习之路(三)

Python 学习之路(三) 以下所用的是Python 3.6 一.集合部分 集合是一个无序的,不重复的数据集合,主要用来去重,以及关系测试:交集,差集,并集等 1.1 关系操作 1.1.1 列表去重 可以给列表去重,例如: 1 set_demo = [1,2,3,4,5,3,2,1] # 列表 2 set_demo = set(set_demo) # 转换成集合,来去重 3 print(set_demo) 1.1.2 取交集 intersection()方法 可以获得两个集合的交集部分,例如:

Python学习之路—2018/6/14

Python学习之路-2018/6/14 1.浏览器与服务器 浏览器向服务器发送请求的过程为请求过程,服务器向浏览器响应的过程为响应过程. 2.简单的web应用程序 import socket sock = socket.socket() sock.bind(("100.113.14.43", 8080)) sock.listen(5) with open("index.html", "r") as f: # 先将样式写入html文件中,然后再读

Python学习之路—2018/6/19

Python学习之路-2018/6/19 1.注册自定义转化器 converts.py class Birthday: regex = '[0-9]{8}' # 匹配规则 def to_python(self, value): # 匹配的字符串返回具体的变量值,传递到对应的视图函数中 return int(value) def to_url(self,value): # 反向解析 return "%04d" % value urls.py from django.urls import