Python:如何将项目(弹出)从一个列表移动到第二个列表,最初是空白列表

时间:2019-10-21 15:50:47

标签: python python-3.x

首先,这是学习Python编码的自我完善练习,因此我可以进行某种程度的测试自动化。创建一个GO FISH游戏。我有一张新的扑克牌,已经洗牌了。

洗牌后的Freshdeck为:['6D','9S','AS','2D','QH','JD','7D','6C','7S','4D', 'JS','9D','8S','9C','AD','2C','8D','QC','KC','10D','QD','KD','JC ”,“ 7C”,“ QS”,“ KS”,“ 10S”,“ KH”,“ AC”,“ 3H”,“ 3D”,“ 10C”,“ 8H”,“ 5C”,“ 2H”, '4C','6H','10H','8C','JH','2S','4S','3C','6S','4H','5S','9H','5D ','7H','3S','AH','5H']

我想为每位玩家分发7张牌,因此我需要从所述列表中弹出最后一张卡,并将其移至每位玩家的新列表中。 (阅读其他地方建议使用握住玩家手牌的字典)。这不是基本问题。无论如何尝试使用append,我似乎都无法获得要存储在new中的最后一个值(第一次迭代时通常是空白列表)。弹出一个值就可以了。我混乱的牌组每次执行都会减小大小,但我失去了空间的最后一个价值。

def create_hand(PN,shuffled_deck):
    print("Create Hand Function")
    print("Creating Hand of Cards for Player: ",PN)
    print("Length of Shuffled Pre-Shuffled Deck is: ",len(shuffled_deck))
    print("Pre-Shuffled Freshdeck is:",shuffled_deck)
    random.shuffle(shuffled_deck)
    print("Post-Shuffled Freshdeck is:",shuffled_deck)

    for i in range(1,7,1):
        print(f"The {i}th card number will be popped to Player Hand {PN}")
        temp=[]
        print("Printing Temp  ",temp)
        print(shuffled_deck)
        temp.append(print(shuffled_deck[-1]))
        shuffled_deck.pop(-1)

2 个答案:

答案 0 :(得分:1)

pop返回弹出的对象。

所以您要做的就是temp.append(shuffled_deck.pop(-1))

这样,您将弹出对象并将其立即添加到temp。

如果您还想打印它,可以在弹出之前这样做:

print(shuffled_deck[-1])
temp.append(shuffled_deck.pop(-1))

答案 1 :(得分:0)

阅读文档。 print在这里被滥用;它不返回值。 pop返回值。

    temp.append(print(shuffled_deck[-1]))   # Print the value and put a `None` into the player's hand
    shuffled_deck.pop(-1)                   # Remove the value at the end of the list and toss it away.

尝试:

temp.append(shuffled_deck.pop(-1))

为获得更好的程序流程,只需拉开整个手。交易仅仅是人类脆弱的最后一种“随机化”技术。

temp = shuffled_deck[:7]
shuffled_deck = shuffled_deck[7:]