交换变量
- x = 6
- y = 5
- x, y = y, x
- print x
- >>> 5
- print y
- >>> 6
if 语句在行内
- print "Hello" if True else "World"
- >>> Hello
连接
下面的最后一种方式在绑定两个不同类型的对象时显得很酷
- nfc = ["Packers", "49ers"]
- afc = ["Ravens", "Patriots"]
- print nfc + afc
- >>> ['Packers', '49ers', 'Ravens', 'Patriots']
- print str(1) + "world"
- >>> 1 world
- print `1` + "world"
- >>> 1 world
- print 1, "world"
- >>> 1 world
- print nfc, 1
- >>> ['Packers', '49ers'] 1
计算技巧
- # 向下取整
- print 5.0//2
- >>> 2
- # 2 的 5 次方
- print 2**5
- >> 32
注意浮点数的除法
- print .3/.1
- >>> 2.9999999999999996
- print .3//.1
- >>> 2.0
数值比较
- x = 2
- if 3 > x > 1:
- print x
- >>> 2
- if 1 < x > 0:
- print x
- >>> 2
两个列表同时迭代
- nfc = ["Packers", "49ers"]
- afc = ["Ravens", "Patriots"]
- for teama, teamb in zip(nfc, afc):
- print teama + "vs." + teamb
- >>> Packers vs. Ravens
- >>> 49ers vs. Patriots
带索引的列表迭代
- teams = ["Packers", "49ers", "Ravens", "Patriots"]
- for index, team in enumerate(teams):
- print index, team
- >>> 0 Packers
- >>> 1 49ers
- >>> 2 Ravens
- >>> 3 Patriots
列表推导
已知一个列表, 刷选出偶数列表方法:
- numbers = [1,2,3,4,5,6]
- even = []
- for number in numbers:
- if number%2 == 0:
- even.append(number)
用下面的代替
- numbers = [1,2,3,4,5,6]
- even = [number for number in numbers if number%2 == 0]
字典推导
- teams = ["Packers", "49ers", "Ravens", "Patriots"]
- print {key: value for value, key in enumerate(teams)}
- >>> {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}
初始化列表的值
- items = [0]*3
- print items
- >>> [0,0,0]
将列表转换成字符串
- teams = ["Packers", "49ers", "Ravens", "Patriots"]
- print ",".join(teams)
- >>> 'Packers, 49ers, Ravens, Patriots'
从字典中获取元素
不要用下列的方式
- data = {'user': 1, 'name': 'Max', 'three': 4}
- try:
- is_admin = data['admin']
- except KeyError:
- is_admin = False
替换为
- data = {'user': 1, 'name': 'Max', 'three': 4}
- is_admin = data.get('admin', False)
获取子列表
- x = [1,2,3,4,5,6]
- # 前 3 个
- print x[:3]
- >>> [1,2,3]
- # 中间 4 个
- print x[1:5]
- >>> [2,3,4,5]
- # 最后 3 个
- print x[-3:]
- >>> [4,5,6]
- # 奇数项
- print x[::2]
- >>> [1,3,5]
- # 偶数项
- print x[1::2]
- >>> [2,4,6]
60 个字符解决 FizzBuzz
前段时间 Jeff Atwood 推广了一个简单的编程练习叫 FizzBuzz, 问题引用如下:
写一个程序, 打印数字 1 到 100,3 的倍数打印 Fizz 来替换这个数, 5 的倍数打印 Buzz, 对于既是 3 的倍数又是 5 的倍数的数字打印 FizzBuzz
这里有一个简短的方法解决这个问题:
for x in range(101):print"fizz"[x%3*4::]+"buzz"[x%5*4::]or x
集合
用到 Counter 库
- from collections import Counter
- print Counter("hello")
- >>> Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})
迭代工具
和 collections 库一样, 还有一个库叫 itertools
- from itertools import combinations
- teams = ["Packers", "49ers", "Ravens", "Patriots"]
- for game in combinations(teams, 2):
- print game
- >>> ('Packers', '49ers')
- >>> ('Packers', 'Ravens')
- >>> ('Packers', 'Patriots')
- >>> ('49ers', 'Ravens')
- >>> ('49ers', 'Patriots')
- >>> ('Ravens', 'Patriots')
- False == True
在 python 中, True 和 False 是全局变量, 因此:
- False = True
- if False:
- print "Hello"
- else:
- print "World"
- >>> Hello
来源: http://www.jqhtml.com/11658.html