Fluent Python-1(collections.namedtuple & 마술 방법의 사용)

1696 단어 python 학습

관련 지식 포인트

  • collections — Container datatypes
  • collections.namedtuple
  • 특수 방법
  • 슬라이스 작업
  • 역방향 교체
  • 정렬 함수(sorted)
  • 코드

    import collections # collections — Container datatypes
    
    # namedtuple() Factory Function for Tuples with Named Fields
    Card = collections.namedtuple('Card', ['rank', 'suit'])
    
    class FrenchDeck:
        ranks = [str(n) for n in range(2, 11)] + list('JQKA')
        suits = 'spades diamonds clubs hearts'.split()
    
        def __init__(self):
            self._cards = [Card(rank, suit) for suit in self.suits
                                            for rank in self.ranks]
    
        def __len__(self):
            return len(self._cards)
    
        def __getitem__(self, position):
            return self._cards[position]
    
    beer_card = Card('7', 'diamonds')
    print('beer_card', beer_card)
    
    #        __getitem__     
    deck = FrenchDeck()
    print('deck[-1]', deck[-1])
    
    #        ,       __getitem__     
    print('deck[:3]', deck[:3]) #       3   
    print('deck[12::13]', deck[12::13]) #       12     ,     13      
    
    #     
    for card in reversed(deck):
        print('card_reversed', card)
    
    #     
    suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0) #       
    def spades_high(card):
        rank_value = FrenchDeck.ranks.index(card.rank)
        return rank_value * len(suit_values) + suit_values[card.suit]
    
    for card in sorted(deck, key=spades_high):
        print('spades_high,card', card)
    

    참고 자료

  • Fluent Python
  • 파이썬 공식 문서
  • 총결산


    "필요할 때 배우러 갈게요."배울 수 있는 것은 에 국한된다.

    좋은 웹페이지 즐겨찾기