Python 如何将整数范围转换为用于变量的字符串?
所以我有一些变量在字符串的末尾使用数字。但是当我使用str函数时,“i”似乎没有转换成字符串。知道为什么会这样吗 代码: 我知道你想做什么,但你做不到(大部分情况下,见下文)。您编写的代码将:Python 如何将整数范围转换为用于变量的字符串?,python,variables,range,Python,Variables,Range,所以我有一些变量在字符串的末尾使用数字。但是当我使用str函数时,“i”似乎没有转换成字符串。知道为什么会这样吗 代码: 我知道你想做什么,但你做不到(大部分情况下,见下文)。您编写的代码将: has_GroupConnection.__getitem__(i) # foo[x] -> foo.__getitem__(x) 由于程序中未定义has\u GroupConnection,因此这将永远不会起作用,反而会引发名称错误。不过,你可以定义它 has_GroupConnection =
has_GroupConnection.__getitem__(i)
# foo[x] -> foo.__getitem__(x)
由于程序中未定义has\u GroupConnection
,因此这将永远不会起作用,反而会引发名称错误
。不过,你可以定义它
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]))
我的第一句话过于简单,你可以用
eval
或locals()
来做,但这是个坏主意,所以我不会告诉你怎么做,我会强烈警告你不要这样做!它丑陋、效率低下,而且代码气味难闻(你应该为自己想到谷歌搜索它而感到羞耻!)这就是你想要的:
has_GroupConnection = [True] * 3
GroupConnection = [45, 88, 55]
for i in range(3):
if has_GroupConnection[i]:
print(GroupConnection[i])
输出为:
45
88
55
和GroupConnection
现在都是列表,因此您可以使用[]
对它们进行索引。我将循环从0改为2。原始循环从1运行到2。我还消除了一些不必要的东西。下面是使用元组的列表的另一种方法
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_connections = [True, True, False]
group_connections = [45, 88, 55]
for h, g in zip(has_connections, group_connections):
if h:
print(g)
我会考虑在这里使用字典来存储这些值(嵌套到“有”和“连接”属性),这样就不会有问题通过循环键。
如果需要包含特定的数字,请使用字符串替换:
对于范围(1,3)内的i:
连接dict['GroupConnection%s'%str(i)]['has']时:
打印(dict['GroupConnection%s'%str(i)]['conn-number'])语法[]
用于指定iterable中的元素,如列表或字符串,或从dict
中检索值。你试图用它来识别一个变量,但那是行不通的。您可能应该使用dict
,而不是:
group_connections = {
1 : None,
2 : 45,
3 : 88,
4 : 55
}
然后,您只需遍历dict
的键即可获得所有GroupConnection
s:
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)
由于您的两个数据是相关的,因此将它们放在一起以使它们以某种方式相关更为合理。用列表替换GroupConnection1
、GroupConnection2
、和GroupConnection3
。修复了@TomKarzes的可能重复项,不知道我在想什么。
for grp_number, connection in group_connections.items():
if connection:
print(connection)