Python进阶笔记(一)

容器 Collercions

  • defaultdict
  • counter
  • deque
  • namedtuple
  • enum.Enum

defaultdict

dict不同,不需要检查key是否存在

from collections import defaultdict
colours = {
('Yasoob', 'Yellow'),
('Ali', 'Blue'),
}

favourite_colours = defaultdict(list)
for name, colour in colours:
    favourite_colours[name].append(colour)
print(favourite_colours)
print(favourite_colours['Yasoob'])

输出结果

defaultdict(<class 'list'>, {'Yasoob': ['Yellow'], 'Ali': ['Blue']})
['Yellow']

Counter

Counter是一个计数器

from collections import Counter

colours = (
    ('Yasoob', 'Yellow'),
    ('Ali', 'Blue'),
    ('Arham', 'Green'),
    ('Ali', 'Black'),
    ('Yasoob', 'Red'),
    ('Ahmed', 'Silver'),
)

favs = Counter(name for name, colour in colours)
print(favs)
print(favs['Ali'])

输出结果

Counter({'Yasoob': 2, 'Ali': 2, 'Arham': 1, 'Ahmed': 1})
2

deque

deque提供了一个双端队列,你可以从头/尾两端添加或删除元素。要 想使用它,首先我们要从collection中导入deque模块:

from collections import deque
d = deque()

d = deque() 
d.append('1') 
d.append('2') 
d.append('3') 
print(len(d))
print(d[0])
print(d[-1])

输出结果

3
1
3

作用类似于列表

d = deque(range(10))
print(len(d))
#取出左侧第一个元素
print(d.popleft())
#剩余队列
print(d)
#取出右侧第一个元素
print(d.pop())
#打印剩余的队列
print(d)

输出结果

10
0
deque([1, 2, 3, 4, 5, 6, 7, 8, 9])
9
deque([1, 2, 3, 4, 5, 6, 7, 8])

namedtuple

类似于元组,不能改变内部数据。
namedtuples 是什么呢?它把元组变成一个针对简单任务的容 器。你不必使用整数索引来访问一个 namedtuples 的数据。你可以像字典( dict)一样访问 namedtuples ,但 namedtuples 是不可变的。

from collections import namedtuple
#初始化一个animal 的对象,包含name age type 三个属性
animal = namedtuple('animal', 'name age type')
#初始化一个fruit的对象,包含name clour 两个属性
fruit = namedtuple('fruit', 'name clour ')
#定义apple 为fruit ,颜色为 red
apple = fruit(name = 'fruit', clour = 'red')
#定义perry 为animal,name为perry age 为30 type 为 cat
perry = animal(name = 'perry', age = 30, type = 'cat')

print(perry)
print(perry.age)
print(apple)
#转为字典格式
print(apple._asdict())

输出结果

animal(name='perry', age=30, type='cat')
30
fruit(name='fruit', clour='red')
{'name': 'fruit', 'clour': 'red'}

enum.Enum

枚举类型,是一种组织各种东西的方式,枚举可以有多种方式获取值

from collections import namedtuple
from enum import Enum

class Species(Enum):
    cat = 1
    dog = 2
    horse = 3
    aardvark = 4
    butterfly = 5
    owl = 6
    platypus = 7
    dragon = 8
    unicorn = 9
    
    kitten = 1
    puppy = 2
    
Animal = namedtuple('Animal' , 'name age type')
perry = Animal(name = 'Perry', age = 31, type = Species.cat)
drongon = Animal(name = 'Drongon', age = 4, type = Species.dragon)
tom = Animal(name = 'Tom', age = 75, type=Species.cat)
charlie = Animal(name = 'Charlie', age = 2, type = Species.kitten)

print(Species(1))  
print(Species['cat'])
print(Species.cat)

print(perry.age)
print(drongon.type)  

输出结果

Species.cat
Species.cat
Species.cat
31
Species.dragon
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值