Python 条件和循环容易忽视的知识点

Python 条件和循环容易忽视的知识点_第1张图片
文/CinderellaM

文章主要记录了条件和循环中的一些自己忽视的知识点,和一些自己在应用过程中出现的错误,系统的对这部分知识进行梳理与补充

else语句

Python的缩进使用强制使代码正确对齐,让程序员决定else属于哪一个if,所以在Python中出现'悬挂else'的情况是不会出现的

'''即使没有else与最近的if配对,程序依然正确运行,通过强制对齐,else正确的与外层的if配对'''
if a>0:
    if b>0:
        pass
else:
    pass

while-else语句

'''只要while循环正常结束,而不是被break打断,else子句就会执行'''
while x>0:
    if y>0:
        break
    pass
else:
    pass

for-else语句

同while-else

条件表达式(三元操作符)

X if C else Y
对应C的三元操作符
C? X:Y

x=1
y=5
r=x if x>y else y
print r
>>5

for语句

用于序列类型

序列的三种基本迭代方法

通过序列项迭代
'''性能好,速度快'''
for eachName in nameList:
       pass
通过序列索引迭代
'''接近C的使用方式'''
for nameIndex in range(len(nameList)):
       pass
使用项和索引迭代
'''两全其美的方法,既获得了索引,也获得了序列元素'''
for i,eachLee in enumerate(nameList):
        pass

用于迭代器类型

迭代器并不代表循环条目的集合。使用迭代器做for循环的代码与使用序列条目几乎完全相同

range()内建函数

range(start,end,step=1)
range(start,end)
range(end)

xrange()内建函数

与序列相关的内建函数

sorted()

reversed()

enumerate()

zip()

迭代器和iter()函数

迭代器规则

迭代的意思是重复做一些事很多次,就像在循环中做的那样,只要该对象实现了iter方法,就能进行迭代。该方法会返回一个迭代器(iterator),所谓的迭代器就是具有next方法的对象。在调用next()方法时,迭代器会返回它的下一个值。如果迭代器没有值可以返回,就会引发一个StopIteration异常,这并不代表错误发生,只是告诉外部调用者,迭代完成。

使用迭代器

序列

'''对一个对象调用iter()就可以得到它的迭代器,调用迭代器的next()方法可以获得它的下个项
   reversed()内建函数返回一个反序访问的迭代器
   enumerate()内建函数返回一个具有索引和元素的迭代器'''
i=iter([1,2,3])
i.next()
r=reversed([1,2,3])
r.next()
e=enumerate([1,2,3])
e.next()

字典

字典的迭代器会遍历它的键,语句for eachKey in myDict.keys()可缩写为for eachKey in myDict

文件

文件对象生成的迭代器会自动调用readline()方法,语句for eachLine in myFile.readline() 可缩写为 for eachLine in myFile

你可能感兴趣的:(Python 条件和循环容易忽视的知识点)