【发布时间】:2019-01-09 19:11:46
【问题描述】:
我一直在尝试以特定方式随机排列列表:
def shuffle(card_deck):
shuffled = list()
deck_size = len(card_deck) // 2
lhand_deck = card_deck[0: deck_size]
rhand_deck = card_deck[deck_size: deck_size*2]
for i, j in zip(lhand_deck, rhand_deck):
shuffled.append(i); shuffled.append(j)
return shuffled
为了提高更大牌组的性能,我决定使用列表理解:
shuffled = [
i
for i in zip(lhand_deck, rhand_deck)
]
现在列表包含元组,但我希望它包含单个元素:
shuffled = [0, 2, 1, 3]
而不是
shuffled = [(0,2), (1, 3)]
* 在这种情况下不起作用,因为它会引发错误。是否有任何方法或只能使用循环?感谢您的帮助
【问题讨论】:
-
您可以按照重复的
list(sum(shuffled, ()))中的说明使用。这当然只是副本中的其他几种方式之一 -
列表推导只会略微提高性能,如果您手动缓存附加方法,这种改进就会消失
标签: python list zip list-comprehension