gpt4 book ai didi

python - 使用 for 循环创建具有不同名称的变量

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:49 24 4
gpt4 key购买 nike

我正在尝试使用 for 循环创建 5 个(当前)变量。我想让这些变量被命名为soldier+i,其中i是for循环中迭代的数字。

    first_names=['name1', 'name2', 'name3', 'name4', 'name5']
last_names=['Lname1', 'Lname2', 'Lname3', 'Lname4', 'Lname5']
nick_names=['1','2','3','4','5']
soldier_HPs=[10,9,8,7,6]
for i in range(5):
soldier+i=[first_names[i-1],last_names[i-1],nick_names[i-1],soldierHPs[i-1]]

如您所见,我想通过将士兵命名为“士兵+(相应编号)”来存储每个士兵。然后将其健康状况、名字、姓氏和昵称全部存储为列表的一部分。我遇到的问题是它无法连接字符串和整数。问题是这应该是变量的名称。如果我只想将其设置为一个字符串来设置变量,我可以使用:x="soldier"+ str(i)。但同样,由于这是变量的名称,因此这是行不通的。

最佳答案

欢迎来到 Stackoverflow!我注意到你是一名高中生,所以我不会假设你有任何先验知识。接下来让我们回答您的问题。

您正在 Python 中使用列表来存储有关士兵的信息。然后您想要单独存储每个士兵的信息。现在,这不是很多余吗?

如果我想要第一个士兵的名字,我可以简单地输入first_name[0]。所有信息都可以在当前范围内通过有意义的变量名称(即名字、姓氏等)访问。如果将它们放入列表中,则必须记住第一个索引是 first_names,第二个索引是 last_names 等。这些会为您的程序/游戏代码增加另一层困惑变大了。

但是,在某些情况下,出于迭代目的对有关字符的信息进行分组确实更方便。在Python中有一个名为collections的模块,您可以在其中找到一个名为namedtuple的函数。该函数是所谓的工厂函数,其唯一目的是为您声明和定义类。

假设我想快速定义一个 Soldier 类,具体方法如下

from collections import namedtuple

Soldier = namedtuple('Soldier', ['first_name', 'last_name', 'nick_name', 'HP'])
soldier_info = [ # this is list comprehension
Soldier(first_names[idx], last_names[idx], nick_names[idx], soldier_hps[idx])
for idx in range(len(first_names))
]

然后你就可以了

firstname_second_soldier = soldier_info[1].first_name

namedtupletuple 一样是不可变且可散列的,但具有命名字段。

关于python - 使用 for 循环创建具有不同名称的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36535709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com