大神看了我的代码说:我这是把python当C在用,忘记谭浩强教的东西再来学python。
嗯,python的特性都不怎么知道,还在啃着当年C的老底。
比如python的while和for循环都支持else,在循环中如果没有遇到break就会进入到else,否则跳过else
while x:
if x%2==1:
print 'ddd'
break
else:
print 'aaa'
文件扫描更快的方式是不加载文件,文件自带内置的迭代器。
for line in open('abc.txt'):
print line.upper()
#也可以
a = list(open('d.txt'))
并行迭代zip,zip可以用来创建字典
l2=range(6,11)
l1=range(5)
zip(l1,l2)
Out[15]: [(0, 6), (1, 7), (2, 8), (3, 9), (4, 10)]
---------
for (x,y) in zip(l1,l2):
print x,y,'=',x+y
-------
0 6 = 6
1 7 = 8
2 8 = 10
3 9 = 12
4 10 = 14
列表解析式读文件
#打开文件,并读取第一个字符为p的行
#列表解析式比等效的展开for循环快,底层用的是C实现
lines = [ line.rstrip() for line in open('abc.txt') if line[0] == 'p']
#在leetcode的短代码中经常看到的表达
#列表解析式完成了两个字符串的字母组合
[x+y for x in 'abc' for y in '123']
Out[17]: ['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
网友评论