补充几个高级函数
zip
-
把两个可迭代的内容生成一个可迭代的tuple元素类型组成的内容
# zip案例 l1 = [1,2,3,4,5] l2 = [11,22,33,44,55] z = zip(l1,l2) print(type(z)) print(z) for i in z: print(i) # zip案例2 l1 = ["wangwang","mingyue","yyt"] l2 = [12,99,38] z = zip(l1,l2) for i in z: print(i)
enumerate
-
跟zip功能比较像
-
对可迭代对象里的每一个元素,配上一个索引,然后索引和内容构成tuple类型
# enumerate案例 l1 = [11,22,33,44,55] em = enumerate(l1) l2 = [i for i in em] print(l2) #enumerate案例 em = enumerate(l1, start = 100) l2 = [i for i in em] print(l2)
collections模块
- namedtuple
- deque
namedtuple
-
tuple类型
-
是一个可命名的tuple
import collections Point = collections.namedtuple("Point",['x','y']) p = Point(11, 22) print(p.x) print(p[0]) Circle = collections.nametuple("Circle",['x', 'y', 'r']) c = Circle(100, 150, 50) print(c) print(type(c)) #想检测以下nametupled到底属于谁的子类 isinstance(c, tuple)
deque
-
比较方便的解决了频繁删除插入带来的效率问题
from collections import deque q = deque(['a', 'b', 'c']) print(q) q.append("d") print(q) q.appendleft('x') print(q)
defaultdict
-
当直接读取dict不存在的属性时,直接返回默认值
from collections import defaultdict # lambda表达式,直接返回字符串 func = lambda: "刘大拿" #若调用dict中不存在的值,回调用lambda函数,返回函数值 d2 = defaultdict(func) d2["one"] = 1 d2["two"] = 2 print(d2['one']) print(d2['four'])
Counter
-
统计字符串个数
from collections import Counter #为什么下面结果不把abcdefgabcdeabcdabcaba作为键值,而是以其中一个字母作为键值 #需要括号里内容为可迭代 c = Counter("abcdefgabcdeabcdabcaba") print(c) s = ["liudana", "love" , "love", "love", "love", "wangxiaona"] c = Counter(s) print(c)