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

标签 python variables naming

我正在尝试使用 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/

相关文章:

python - GUI 上的文本不刷新

python - 图像不响应不同的按键 Pygame Python

Python:嵌套类而不使导入复杂化

Qt - 不要将主要版本号附加到可执行文件/库名称的末尾

当特征与类相同时,Scala 特征命名约定

python - 阻止 Python enumerate() 将字符串拆分为字符

python - 如何遍历一系列固定列表中的所有可能值?

python - 来自 2 个范围的 2 个元素的总和将是一个给定的数字

WordPress get_template_part 传递变量

c++ - 在哪里可以找到代表什么函数名称? C++