lar*_*ick -1 python algorithm python-3.x
CLUB_CARDS = range(13)
DIAMONDS_CARDS = range(13, 26)
HEART_CARDS = range(26, 39)
SPADE_CARDS = range(39, 52)
CARDS = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K"]
def get_cards():
    d = {k: v for k, v in zip(CLUB_CARDS, CARDS)}
    d.update({k: v for k, v in zip(DIAMONDS_CARDS, CARDS)})
    d.update({k: v for k, v in zip(HEART_CARDS, CARDS)})
    d.update({k: v for k, v in zip(SPADE_CARDS, CARDS)})
    return d
Run Code Online (Sandbox Code Playgroud)
如何重构这段代码?
如果重构的目标是简化这一点,您可以使用itertools.cycle()在一定范围内循环卡片:
from itertools import cycle
CARDS = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K"]
def get_cards():
    return {k: v for k,v in zip(range(52), cycle(CARDS))}
get_cards()
Run Code Online (Sandbox Code Playgroud)
返回相同的结果:
{0: 'A',
 1: '2',
 2: '3',
 3: '4',
 4: '5',
 ... 
 48: 'T',
 49: 'J',
 50: 'Q',
 51: 'K'}
Run Code Online (Sandbox Code Playgroud)
不确定您如何使用它,但由于键只是有序整数,因此作为列表可能更有意义。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           82 次  |  
        
|   最近记录:  |