• python的具名元组和sorted函数


     1 import collections
     2 Card = collections.namedtuple('Card', ['rank', 'suit'])
     3 #定义一个具名元组 第一个参数是元组的名字,第二个参数是一个字段名组成的列表
     4 #Card._fields 获取字段名的列表
     5 #Card._make(_data) 实例化一个具名元组 _data一个和fields长度相同的一个元组
     6 #Card._asdict() 获得一个字典字段名 == 值
     7 
     8 class FrenchDeck(object):
     9     ranks = [str(n) for n in range(2, 11)] + list('JQKA') #获取所有牌列表2--A
    10     suits = 'spades diamonds clubs hearts'.split()   #获取花色列表
    11 
    12     def __init__(self):
    13         self._cards = [Card(rank, suit) for suit in self.suits
    14                        for rank in self.ranks]  #获取组合列表
    15 
    16     def __len__(self):
    17         return len(self._cards)
    18 
    19     def __getitem__(self, position):
    20         return self._cards[position]
    21 
    22 
    23 beer_card = Card('7', 'diamonds') #得到一个花色为diamonds,数值为7的牌
    24 print(beer_card)
    25 deck = FrenchDeck()
    26 print(deck)  #获取52张牌的集合
    27 print(deck[0]) #打印第一张牌
    28 suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)
    29 def spades_high(card):
    30     rank_value = FrenchDeck.ranks.index(card.rank) #获取数值排序
    31     return rank_value * len(suit_values) + suit_values[card.suit] #返回数值+花色的排序
    32 
    33 for card in sorted(deck, key=spades_high): # 对卡牌做排序 然后循环
    34     print(card)
    35 
    36 
    37 
    38 # sorted方法:
    39 sorted(deck,key=spades_high,reverse=True)
    40 # deck可迭代对象
    41 # reverse参数  排序规则为True是逆序
    42 # key一个函数,函数的参数是deck中被迭代的值
  • 相关阅读:
    JavaScript 正则表达式
    android源代码提示文本框还能输入多少个字符
    js实现鼠标点击input框后里面的内容就消失代码
    使用prompt输入一句英文句子和排序方式(升/降),将所有单词按排序方式排序后在网页上输出
    Javascript输出表格
    flutter 按键监听
    3.声明
    2.基础类型
    1.安装TypeScrpit
    苹果app证书
  • 原文地址:https://www.cnblogs.com/arrow-kejin/p/10104902.html
Copyright © 2020-2023  润新知