创建可变数量的变量并从列表中填充它们

我正在尝试同时创建一些变量。

我希望用户指定一个值,并因此创建许多唯一变量,并使用已经创建的列表中的值填充它们,然后打印结果。

如果我每次都指定变量的数量,我可以执行此操作,但是我希望程序改为要求用户输入数字。

这是我想要的;但是,假设我知道要创建的手数

Deck = ["AC","AH","AS","AD","KC","KH","KS","KD"]
Hand1 = [Deck.pop(),Deck.pop()]
Hand2 = [Deck.pop(),Deck.pop()]
...
HandN = [Deck.pop(),Deck.pop()]

print("Hand1: ",Hand1)
print("Hand2: ",Hand2)
...
print("HandN: ",HandN)

我想做同样的事情,但是要问用户要创建多少手,就像这样:

Deck = ["AC","KD"]
NumberOfHands = int(input("How Many Hands? "))

for each in range(1,NumberOfHands+1):
    Hand+str(each) = [Decklist.pop(),Decklist.pop]

for each in range(1,NumberOfHands+1):
    print(Hand+str(each))

我认为这样做的方式会导致语法错误。

我看过其他一些看起来很相似的问题,并暗示要用字典来完成;但是,对于在这种情况下如何应用它来说,这对我来说没有意义...

感谢您的帮助!

daihongze 回答:创建可变数量的变量并从列表中填充它们

这是如何使用字典来完成的操作:

hands = {f"Hand{each + 1}": [Deck.pop(),Deck.pop()] for each in range(NumberOfHands)}

这将创建一个大小为NumberOfHands的字典,其中包含从1NumberOfHands的所有手牌

,
  

你可以做到

但是你不应该

try:
 # code
except KeyboardInterrupt:
 # save and exit gracefully

示例:

Deck = ["AC","AH","AS","AD","KC","KH","KS","KD"]
NumberOfHands = int(input("How Many Hands? "))
for n in range(1,NumberOfHands+1):
  globals()["Hand" + str(n)] = [Deck.pop(),Deck.pop()]

for n in range(1,NumberOfHands+1):
    print( globals()['Hand{}'.format(n)])

这是一种肮脏的做法,但是认真地考虑只创建一个变量并将其存储在列表中,然后通过索引访问它们,这是更安全的方法。

考虑这个不错的博客以阅读:http://stupidpythonideas.blogspot.com/2013/05/why-you-dont-want-to-dynamically-create.html

本文链接:https://www.f2er.com/3169041.html

大家都在问