基本风格类
1. 多重赋值和多元赋值
多重赋值:x = y = z = 1
多元赋值:x, y, z = 1, 2, 'str'
2. Python命名中要避免关键字
查询命名是否是关键字的方法:iskeyword()
Python对象
1. None对象
Python有一个特殊的类型,被称为NoneType,它不支持任何运算也没有任何内建的方法。None没有什么有用的属性,而且它的布尔值总是False。
2. Python提供了is
和is not
两个操作符来测试两个变量是否指向同一个对象
a is b
3. 使用isinstance()
函数可以让我们的if语句更方便,并且具有更好的可读性
if isinstance(num, int)...
字符串、列表和元组
1.使用in
或者not in
来判断一个元素是否属于一个序列
2.需要连接两个类型相同序列的时候,尽量不使用’+’
为了节约内存:
+ 对于字符串来说,吧所有的子字符串放到一个列表或者其他任何可以迭代的对象中,然后使用join()
函数把他们连接在一起
+ 对于列表的连接来说,可以调用extend()
。
3.enumerate(iter)
方法
接受一个可迭代的对象作为参数,返回一个由参数的index值和item值组成的元组
s= enumerate('1234')
for index,item in s:
print(index,',',item)
4.任何一个可迭代的对象中包含的元素,都可以通过赋值的方法分解为单独的变量
p = [1,2,3]
x,y,z = p
5.找到最大或者最小的N个元素,可以使用:
import headq
headq.nlargest(N,data)
headq.nsmallest(N,data)
6.slice()
函数创建切片对象
slice
对象内含start, stop, step
三个属性
7.Counter
对列表内元素出现次数计数
from collections import Counter
Counter.most_common(N) # 最常出现的N个元素及其出现次数
Counter(list) # 对列表计数
Counter
可以同各种运算操作结合起来使用,例如可以将两个列表的元素联合计数。
8.使用列表推导式对列表中的数据进行筛选
filter = n for n in myList if n > 0
9.使用filter()
函数对目标进行筛选,但是首先要将筛选逻辑编写成函数func()
形式
filter = filter(func, values)
字典
1.使用for key in dict
来直接访问字典的键值循环
不需要再使用for key in dict.keys()
了
2.使用OrderedDict
控制字典中元素的顺序
from collections import OrderedDict
在迭代时,字典中元素的顺序会严格按照元素添加的顺序进行
3.使用zip()
可以将字典的key和value反转
zip(dict.values(),dict.keys())
4.如果想对字典的值进行计算,先用zip
反转,再用其他函数计算
5.用keys()
或者items()
配合运算符比较字典,包括找出相同值,不同值等等
6.用itemgetter
对字典中某一个或某几个键排序
from operator import itemgetter
sort_by_key1 = sorted(rows, key=itemgetter(key1)
也可以用lambda
来取代itemgetter()
7.itertools.groupby()
来对数据进行分组
from itertools import groupby
8.利用字典推导式从字典中提取子集
sub_dict = {key: value for key, value in dict.items() if value > 1}
sub_dict = {key: value for key, value in dict.items() if key in some_list}
9.ChainMap
合并字典
from collections import ChainMap
dict1 = ChainMap(dict2, dict3)
条件和循环
1. 条件表达式可以表示成= x if x < y else y
2. 在不需要做任何事情的地方放一个pass