多平台统一管理系统接口,提高效率与自动化的关键
287
2022-08-25
python 高级函数补充(python培训)
高级函数补充
zip
把两个可迭代内容生成一个可迭代的tuple元素类型组成的内容
# zip 案例l1 = [1,2,3,4,5]l2 = [11,22,33,44,55]z = zip(l1, l2)print(type(z))for i in z: print(i)
l1 = ["wangwang", "mingyue", "yyt"]l2 = [89, 23, 78]z = zip(l1, l2)for i in z: print(i) l3 = (i for i in z)print(l3)
('wangwang', 89)('mingyue', 23)('yyt', 78)
enumerate
跟zip功能比较像对可迭代对象里的每一元素,配上一个索引,然后索引和内容构成tuple类型
l1 = [11,22,33,44,55]em = enumerate(l1)l2 = [i for i in em]print(l2)
[(0, 11), (1, 22), (2, 33), (3, 44), (4, 55)]
em = enumerate(l1, start=100)l2 = [i for i in em]print(l2)
[(100, 11), (101, 22), (102, 33), (103, 44), (104, 55)]
collections模块
namedtupledeque
namedtuple
tuple类型是一个可命名的tuple
import collectionsPoint = collections.namedtuple("Point", ['x', 'y'])p = Point(11, 22)print(p.x)print(p[0])
1111
Circle = collections.namedtuple("Circle", ['x', 'y', 'r'])c = Circle(100, 120, 20)print(c)print(type(c))# 检测一下namedtuple到底属于谁的子类isinstance(c, tuple)
Circle(x=100, y=120, r=20)
import collectionshelp(collections.namedtuple)
Help on function namedtuple in module collections:namedtuple(typename, field_names, *, rename=False, defaults=None, module=None) Returns a new subclass of tuple with named fields. >>> Point = namedtuple('Point', ['x', 'y']) >>> Point.__doc__ # docstring for the new class 'Point(x, y)' >>> p = Point(11, y=22) # instantiate with positional args or keywords >>> p[0] + p[1] # indexable like a plain tuple 33 >>> x, y = p # unpack like a regular tuple >>> x, y (11, 22) >>> p.x + p.y # fields also accessible by name 33 >>> d = p._asdict() # convert to a dictionary >>> d['x'] 11 >>> Point(**d) # convert from a dictionary Point(x=11, y=22) >>> p._replace(x=100) # _replace() is like str.replace() but targets named fields Point(x=100, y=22)
deque
比较方便的解决了频繁删除插入带来的效率问题
from collections import dequeq = deque(['a', 'b', 'c'])print(q)q.append('d')print(q)q.appendleft('x')print(q)
deque(['a', 'b', 'c'])deque(['a', 'b', 'c', 'd'])deque(['x', 'a', 'b', 'c', 'd'])
defaultdict
当直接读取dict不存在的属性时,直接返回默认值
d1 = {"one":1, "two":2, "three":3}print(d1['one'])print(d1['four'])
1---------------------------------------------------------------------------KeyError Traceback (most recent call last)
from collections import defaultdict# lambda表达式,直接返回字符串func = lambda: "ruochen"d2 = defaultdict(func)d2["one"] = 1d2["two"] = 2print(d2['one'])print(d2['four'])
1ruochen
Counter
统计字符串个数
from collections import Counter# 为什么下面结果不把abcd...作为键值,而是以其中每一个字母作为键值# 需要括号里内容为可迭代c = Counter("abcdeabcabc")print(c)
Counter({'a': 3, 'b': 3, 'c': 3, 'd': 1, 'e': 1})
# help(Counter)
s = {"I", "love", "you"}c = Counter(s)print(c)
Counter({'love': 1, 'you': 1, 'I': 1})
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~