Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将整数范围转换为用于变量的字符串?_Python_Variables_Range - Fatal编程技术网

Python 如何将整数范围转换为用于变量的字符串?

Python 如何将整数范围转换为用于变量的字符串?,python,variables,range,Python,Variables,Range,所以我有一些变量在字符串的末尾使用数字。但是当我使用str函数时,“i”似乎没有转换成字符串。知道为什么会这样吗 代码: 我知道你想做什么,但你做不到(大部分情况下,见下文)。您编写的代码将: has_GroupConnection.__getitem__(i) # foo[x] -> foo.__getitem__(x) 由于程序中未定义has\u GroupConnection,因此这将永远不会起作用,反而会引发名称错误。不过,你可以定义它 has_GroupConnection =

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

代码:

我知道你想做什么,但你做不到(大部分情况下,见下文)。您编写的代码将:

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)