如何将一系列int转换为用于变量的字符串?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将一系列int转换为用于变量的字符串?相关的知识,希望对你有一定的参考价值。

所以我有一些变量在字符串的末尾使用数字。但是当我使用str函数时,“i”似乎没有转换为字符串。知道为什么会这样吗?

码:

has_GroupConnection1 = True
has_GroupConnection2 = True
has_GroupConnection3 = True

GroupConnection1 = 45
GroupConnection2 = 88
GroupConnection3 = 55

for i in range(1,3):
    if str(has_GroupConnection[i]) == True:
         print(str(GroupConnection[i]))
答案

我看到你正在尝试做什么,但你做不到(大多数情况下,见下文)。你的代码按照以下方式去糖:

has_GroupConnection.__getitem__(i)
# foo[x] -> foo.__getitem__(x)

由于has_GroupConnection没有在你的程序中定义,这将永远不会工作,而是将抛出NameError。不过你可以定义它。

has_GroupConnection = []
has_GroupConnection.append(None)  # 0th element
has_GroupConnection.append(True)  # 1st element
has_GroupConnection.append(True)  # 2nd element
has_GroupConnection.append(True)  # 3rd element
# or indeed has_GroupConnection = [None, True, True, True]
# or a dict will work, too...

# as above...
GroupConnection = [None, 45, 88, 55]

for i in range(1,3):  # note this is only [1, 2], not [1, 2, 3]
    if has_GroupConnection[i]:
         print(str(GroupConnection[i]))

我的第一句话过于简单化,你可以用evallocals()来做,但这是一个坏主意,所以我不会告诉你如何做到这一点,并强烈告诫你不要这样做!这是丑陋,低效和可怕的代码味道(你应该为自己考虑谷歌搜索而感到羞耻!)

另一答案

这是使用元组使用列表的另一种方法

group_connection = list()
group_connection.append((True, 45))
group_connection.append((True, 88))
group_connection.append((True, 55))

for i in range(0,len(group_connection)):
    if (group_connection[i][0] == True):
         print(str(i) + " has the connection number " + str(group_connection[i][1]))

输出

0 has the connection number 45
1 has the connection number 88
2 has the connection number 55
另一答案

这就是你要找的东西:

has_GroupConnection = [True] * 3
GroupConnection = [45, 88, 55]

for i in range(3):
    if has_GroupConnection[i]:
         print(GroupConnection[i])

输出是:

45
88
55

has_GroupConnectionGroupConnection都是现在的列表,所以你用[]索引它们。我将循环更改为从0到2运行。原始循环从1运行到2.我还消除了一些不必要的东西。

另一答案

这将是解决问题的“方式”。

has_connections = [True, True, False]
group_connections = [45, 88, 55]

for h, g in zip(has_connections, group_connections):
    if h:
        print(g)
另一答案

我会考虑在这里使用字典来存储这些值(嵌套为'has'和'connection'属性),因为你在循环键中没有问题。

如果需要包含特定数字,请使用字符串替换:

我在范围内(1,3):

而connection-dict ['GroupConnection%s'%str(i)] ['has']:

print(dict ['GroupConnection%s'%str(i)] ['conn-number'])

另一答案

语法[]用于指定可迭代中的元素,如列表或字符串,或从dict中检索值。您正在尝试使用它来识别变量,但这不起作用。您应该使用dict,而不是:

group_connections = {
    1 : None,
    2 : 45,
    3 : 88,
    4 : 55      
}

然后你可以遍历dict的键来获取你所有的GroupConnections:

for grp in group_connections:
    if group_connections[grp]:
        print(group_connections[grp])

或者您可以使用dict.items()方法:

for grp_number, connection in group_connections.items():
    if connection:
        print(connection)

由于您的两个数据是相关的,因此将它们保持在一起更有意义,因此它们以某种方式相关。

以上是关于如何将一系列int转换为用于变量的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

怎么将一段字符转换成MultipartFile

请教:C语言中如何将一字符串转换成无符号整型

如何将一系列数组转换为 pandas/numpy 中的单个矩阵?

go语言:类型转换

如何将一串字节转换为int?

如何将变量转换为数组