设为首页 收藏本站
查看: 1501|回复: 0

[经验分享] 《python基础教程》笔记之 条件语句和循环语句

[复制链接]

尚未签到

发表于 2015-12-3 08:57:11 | 显示全部楼层 |阅读模式

  • 布尔变量
  下面的值会被解释器看做假(false):
  False None 0 "" () {} []
  其它的一切都被解释为真。
  >>> True
True
>>> False
False
>>> True == 1
True
>>> False == 0
True
>>> True + False +42
43
  bool函数 -- 用来转换其它值,如
  >>> bool([])
False
>>> bool('hello,world')
True


  • 条件语句
  if else elif
  is 和 is not -- 判断两个变量是不是同一个对象
  >>> x=y=[1,2,3]
>>> z=[1,2,3]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
  上例中可见,因为is运算符是判定同一性的。变量x和y都被绑定在同一个列表上,而变量z被绑定在另外一个具有相同数值和顺序的列表上。它们的值可能相同,但是却不是同一个对象。
  in 和 not in -- 成员资格运算符
  assert -- 当条件不为真时,程序崩溃
  >>> x = 5
>>> assert 0<x<10
>>> assert 5<x <4
  Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    assert 5<x <4
AssertionError


  • 循环
  range -- 内建范围函数,它包含下限,但不包含上限,如
  >>> range(0,10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]



for num in range(0, 10):
print num,
  结果如下
  >>>
0 1 2 3 4 5 6 7 8 9
  循环遍历字典,可以使用序列解包,如



d = {'x':1, 'y':2}
for key, value in d.items():
print key, 'corresponds to', value
  结果
  >>>
y corresponds to 2
x corresponds to 1
  zip -- 可以将任意多个序列“压缩”在一起,然后返回一个元组的列表,同时他可以应付不等长的序列,当最短的序列“用完”时就会停止,如
  >>> zip(range(5), xrange(10000))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
>>> names=['a', 'b', 'c']
>>> ages = [45, 23 ,98]
>>> zip(names, ages)
[('a', 45), ('b', 23), ('c', 98)]
  并行迭代,如



names=['a', 'b', 'c']
ages = [45, 23 ,98]
for name, age in zip(names, ages):
print name, 'is', age, 'old'
  结果
  >>>
a is 45 old
b is 23 old
c is 98 old
  编号迭代 -- 迭代序列中的对象,同时还要获取当前对象的索引,如



names=['Mr.a', 'Ms.b', 'Mr.c']
for index, name in enumerate(names):
if 'Mr' in name:
names[index] = 'nan'
for name in names:
print name,
  结果
>>>
nan Ms.b nan
  翻转和排序迭代(sorted和reversed) -- 作用域任何序列或可迭代对象上,不是原地修改对象,而是返回翻转或排序后的版本,但是返回对象不能直接对它使用索引、分片以及调用list方法,可以使用list类型转换返回的对象,如
  >>> sorted([4,3,8,6,3,])
[3, 3, 4, 6, 8]
>>> sorted('hello, world!')
[' ', '!', ',', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
>>> list(reversed('hello, world!'))
['!', 'd', 'l', 'r', 'o', 'w', ' ', ',', 'o', 'l', 'l', 'e', 'h']
>>> ''.join(reversed('hello, world!'))
'!dlrow ,olleh'
  break/continue -- 跳出循环/继续下一轮循环
  循环中的else子句 -- 如果循环中没有调用break时,else子句执行,如



from math import sqrt
for n in range(99, 81, -1):
root = sqrt(n)
if root == int(root):
print n
break
else :
print "Didn't dind it!"
  结果
  >>>
Didn't dind it!


  • 列表推导式--轻量级循环
  列表推导式是利用其它列表创建新列表的一种方法,如
  >>> [(x,y) for x in range(3) for y in range(3)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
>>> girls = ['alice', 'bernice', 'clarice']
>>> boys = ['chris', 'arnold', 'bob']
>>> [b+'+'+g for b in boys for g in girls if b[0] == g[0]]
['chris+clarice', 'arnold+alice', 'bob+bernice']
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146620-1-1.html 上篇帖子: [Leetcode][Python][DP]Regular Expression Matching 下篇帖子: Python读取Yaml文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表