Python基础
- [[#Collections库]]
- [[Python星号的作用]]
- [[Maketrans映射]]
- Python的三个函数式编程基础的函数: filter() 、 map() 、 reduce()
- lambda表达式
Python中一切皆对象
python中的函数和类全是对象,可以被存入列表内,可以被当作函数的返回值
例如:
def output01():
print(13)
def output():
print(12)
return output01
"""不带括号是赋值变量为函数,带括号是赋值变量返回值"""
Test01 = output()
Test01()
-> 12 13
Test02 = output
Test02()
-> 12
object的基类为type,object是type生成的对象。
魔法函数
魔法函数是用于增加类的功能的。
比如增加__getitem__函数后可以直接获得数组内的值。
Collections库
Python内置的数据类型和方法,collections模块在这些内置类型的基础提供了额外的高性能数据类型,比如基础的字典是不支持顺序的,collections模块的OrderedDict类构建的字典可以支持顺序,collections模块的这些扩展的类用处非常大,熟练掌握该模块,可以大大简化Python代码,提高Python代码逼格和效率。
Counter计数器
- 实现列表内数据出现的个数
from collections import Counter
a = [1, 4, 4, 7, 9]
print(Counter(a)) -> Counter({4: 2, 1: 1, 7: 1, 9: 1})
# 统计4出现的个数
print(Counter(a)[4]) _> 2_
- most_common(n)
返回一个列表,包含n个最常见的元素和次数。例如:
Counter('abrabcadabra').most_common(3)
[('a', 5), ('b', 2), ('r', 2)]
如果没有输入n 会默认返回计数器中的所有元素。
- 生成迭代器
elements()
小于1的数字迭代器不会理会,本方法无参数
c = Counter(a=4, b=2, c=0, d=-2).elements()
for i in c:
print(i)
-> a a a a b b
- 互相减去元素 subtract()
c = Counter(a=4, b=2, c=0, d=-2)
d = Counter(a=1, b=2, c=3, d=4)
c.subtract(d)
-> Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
text = 'I want to have a son.'
str1 = Counter(text)
str1.subtract('wa') # 把对应元素个数减去。
print(str1)
-> Counter({' ': 5, 'a': 2, 'n': 2, 't': 2, 'o': 2, 'I': 1, 'h': 1, 'v': 1, 'e': 1, 's': 1, '.': 1, 'w': 0})
双向队列 deque
- append()
添加x到右端
d = deque('abc')
d.append('d')
print(d)
-> deque(['a','b','c','d'])
- appendleft()
添加x到左端
d.appendleft('z')
print(d)
-> deque(['z','a','b','c'])
- clear()
移除所有元素,使其长度为0
- copy()
创建一份浅拷贝。
d = deque('xiaoweuge')
y = d.copy()
print(y)
deque(['x', 'i', 'a', 'o', 'w', 'e', 'u', 'g', 'e'])
- extend()和entendleft()
与append的区别在于可以添加deque
a = deque('abc')
b = deque('cd')
a.extendleft(b)
a
deque(['d', 'c', 'a', 'b', 'c'])
- index( )
返回 x 在 deque 中的位置, 返回第一个匹配项,如果未找到则引发 ValueError。
d = deque('xiaoweuge')
d.index('w')
4
- insert()
在位置i 插入x
a = deque('abc')
a.insert(1,'X')
deque(['a', 'X', 'b', 'c'])
- pop( )和popleft( )
移去并且返回一个元素, 如果没有元素的话,就引发一个 IndexError。
d.pop()
'j'
- remove( value )
移除找到的第一个 value。 如果没有的话就引发 ValueError。
a.remove('a')
- 逆序排列 reverse( )
将deque逆序排列。返回 None 。
d = deque('abc')
deque(reversed(d))
- 向右循环移动n步 rotate( )
d = deque('ghijkl')
d.rotate(1)
d
deque(['l', 'g', 'h', 'i', 'j', 'k'])
# 向左边挤一挤
d.rotate(-1)
d
deque(['g', 'h', 'i', 'j', 'k', 'l'])

浙公网安备 33010602011771号