首页 > 代码库 > python学习笔记二
python学习笔记二
第13章 for和while循环
1.for比while的运行速度快,python学习手冊的作者一直重新启动强调这一点,绝对不嫌啰嗦
2.for的使用方法特别多
a.for x in list:,跟C#里的foreach类似,可是对x的改动不能改变原值,除非x是对象的引用(假设要改动原值,仅仅能使用b使用方法,而且对list[idx]赋值)
b.for idx in range(10):。range能够生成有序整数赋值给idx。能够有三个參数。range(0,10,2)。第一个參数为起始值。第二个參数为终止值的下一个值(即不包括此值)。第三个參数是步进数(即每次递增的数。这里也能够是负值进行反向步进),range能够和len并用:range(len(list))来获取list元素的索引
c.for item in list[::2]:,这里list[::2]是分片。item是每次取分片中的元素,第三个參数相同是步进数(也能够为负)。
分片与a有相同的问题
d.for line in open(‘file.txt‘,‘r‘):,这个使用方法会逐行取文件里的内容
e.for (x,y) in zip(list, list2):,zip会将多个序列中同样索引的元素合并成元组。从而生成一个元组列表
f.for key in Dict:,这里相当于for key in Dict.keys,在新版本号中做子简化(尽管语法上有点怪。可是确实少输入了5个字符)
g.for (offset,item) in enumerate(list):。offset得到可迭代对象的索引。item得到其元素
h.L = [x+10 for x in list],列表解析 [结果表达式 for x in list if x满足的条件],竟然还能够[x+y for x in ‘abc‘ for y in ‘lmn‘],结果是[‘al‘,‘am‘,‘an‘,‘bl‘,‘bm‘,‘bn‘,‘cl‘,‘cm‘,‘cn‘]
g.for root,dirs,files in os.walk(path):。遍历文件夹,root保存path根文件夹路径。dirs保存根文件夹下的文件夹名(不带完整路径),files保存文件名称(不带完整路径)
3.for和while语句比其他语言多一个else块,仅仅有当循环里没有运行过break时才会运行else块里的代码(在以往的编程中确实有遇到这种需求,可见python满足了经验的需求)
4.Dict的初始化能够使用zip来简化dict(zip(keys, values))
5.zip会以最短长度的序列为准对结果进行截断
6.map(None, list, list2),map与zip类型,不同的是将以第一个參数填充短序列造成的空缺
7.file = open(‘file.txt‘,‘r‘),file有三种读取方式
file.read() #读取整个文件(费内存)
file.read(1) #read by charactor。file=open(‘file.txt‘,‘rb‘)后跟file.read(1)表示读取字节块
file.readline() #read line by line
file.readlines() #read whole file to list include lines
file.xreadlines() #按需求载入文字列
8.迭代器:
file.readline()相当于运行了迭代器file.next()。不同的时当运行file.next()到达文件末尾会抛出StopException异常(其他类型迭代器须要iter(list)转换一下)
sorted(list) #使用迭代将list又一次排序
sum(list) #使用迭代将list元素内容相加
any(list) #使用迭代将全部元素or求结果
all(list) #使用迭代将全部元素and求结果
‘&&‘.join(strlist) #使用迭代在全部字符串元素中间插入&&得到一个字符串
list(listable) #使用迭代创建可迭代对象的list对象
tuple(listable) #使用迭代创建可迭代对象的元组新对象
9.pass是空语句
10.赋值语句不能出如今应该是表达式出现的场合(这个非常赞!)比如C语言中的if (x=next())就不能在python中使用
python学习笔记二