python 高级函数补充(python培训)

网友投稿 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)

(1, 11)(2, 22)(3, 33)(4, 44)(5, 55)

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) at 0x000001ED9F1F3ED0>

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)True

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) in 1 d1 = {"one":1, "two":2, "three":3} 2 print(d1['one'])----> 3 print(d1['four'])KeyError: 'four'

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小时内删除侵权内容。

上一篇:python 函数式编程(python能做什么)
下一篇:springboot学习之Thymeleaf模板引擎及原理介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~