想让自己的python代码更加Pythonic吗,我就来带大家研究研究collections模块
在流程的python这本书中,有一点点的叙述,但是想更加深入的去了解,那就得自己查资料了,我也顺便把自己整理的分享出来.
一.namedtuple
可命名元组,给元组每个元素起一个名字,这样就可以通过名字来访问元组里的元素,增强了可读性
下面是一个纸牌的例子:
from collections import *
Card = namedtuple('Card', ['rank', 'suit'])
class FrenchDeck:
ranks = [str(n) for n in range(2, 11)] + list('JDKA')
suits = 'spades diamonds clubs heaerts'.split()
def __init__(self):
# ranks = [str(n) for n in range(2, 11)] + list('JDKA')
# suits = 'spades diamonds clubs heaerts'.split()
self._cards = [Card(rank, suit) for rank in ranks
for suit in suits]
def __len__(self):
return len(self._cards)
def __getitem__(self, position):
return self._cards[position]
if __name__ == '__main__':
deck = Card('7', 'diamonds')
deck1 = FrenchDeck()
print(deck1.__len__())
print(deck1.__getitem__(24))
print(deck1[0])
print(deck1[1:9])
在namedtuple的这个例子中用到了__getitem__方法,可自行查找,这个是很好理解的。
这里面的有些部分对新手来说不好理解,我就再啰嗦一点,
在这里面有个遍历的过程,大概就是这样,运行一下下面的代码就懂了
a = [(r, s) for r in range(1, 4)
for s in range(2, 8)]
print(a)
—————————————持续更新————————————