我在一个列表中列出了一系列的扑克牌。有4个玩家,所以列表中的每四个元素代表一个单一的技巧。我必须同时处理4张牌才能找到特技赢家。我需要一次将列表分成四个元素。我目前正在做以下工作:
cardSequnce = [
'D7', 'D8', 'DT', 'DA',
'H2', 'H7', 'HK', 'H5',
'H3', 'HT', 'HA', 'HQ',
'H8', 'D2', 'H4', 'HJ',
'D6', 'D3'
]
four_card = []
for index, card in enumerate(cardSequnce):
if(index % 4 == 0):
# process four_card
four_card = []
four_card.append(card)
我认为使用python的强大功能我可以做得更好。我能在一个循环中同时存取4张卡吗?有谁能帮我让代码更像Python吗?在
通过显式地迭代四个组而不是逐个元素,可以使代码变得更好一些。有几种方法可以做到这一点。最简单的方法是将索引增加四:
这样做的好处是在
index == 0
时,不会像您的代码那样在空的four_card
上调用处理代码。另外,我建议坚持一种命名约定(下划线vs CamelCase)。我选择前者,因为这是普遍推荐的Python约定。在您可以使用^{} documentation 提供的
^{pr2}$grouper
配方做一个稍微复杂一点的版本。这种方法的优点是,它的规模可能会更好:请记住,如果您的输入序列没有四个元素的倍数,
grouper
的这个实现将用None
填充最后一组中的额外元素。它还假设您在每次迭代中使用组的所有元素(在本例中是这样做的)。有关其他实现,请参见this wonderful answer。在如果要从列表中创建长度为4的列表,则可以使用以下方法:
相关问题 更多 >
编程相关推荐