-1

我想将 for 循环输出值分配给 Python 中的变量。

onetoten = range(1,5)
for count in onetoten:
    print (count)

上面for循环的输出如下

1
2
3
4

我想将此输出分配给变量列表,如s1 = 1、和。但是直到 4 为止,该列表没有具体的数字。它可能会根据脚本中先前的输出而有所不同。因此,根据 for 循环的输出,变量的数量也必须增加,或者基于输出的数量,应该使用变量。请帮助解决这个问题。s2 = 2s3 =3s4 = 4

我之前问过同样类型的问题,我得到了使用 enumerate 的响应,但这不完全是 python,我在 Jython 中使用脚本,所以我没有在 Jython 中枚举。

4

4 回答 4

4

我想将此输出分配给变量列表,如s1 = 1、和。但是直到 4 为止,该列表没有具体的数字。它可能会根据脚本中先前的输出而有所不同。s2 = 2s3 =3s4 = 4

这意味着您不想使用多个变量。按顺序存储值s。而不是你可以使用:sns[n-1]

>>> s = range(1,5)
>>> s[0]
1
>>> s[1]
2
etc.

如果您需要更灵活的命名,即特定的标识符-值对,那么您应该考虑使用dict已建议的 as。

于 2013-07-09T15:09:39.270 回答
2

如果您知道变量的数量,请使用序列解包:

>>> s1,s2,s3,s4 = range(1,5)
>>> s1
1
>>> s2
2
>>> s3
3
>>> s4
4

如果您正在谈论创建动态变量,那么这是一个坏主意,我更喜欢 dict。

>>> dic = {}
>>> for x in range(1,5):
...     dic['s' + str(x)] = x
...     
>>> dic['s1']
1
>>> dic['s2']
2

您可以在 python 中使用创建动态变量,globals()但不推荐:

>>> globals()['foo'] = 'bar'
>>> foo
'bar'
于 2013-07-09T15:07:41.403 回答
1

如果您事先不知道您需要创建的变量数量,或者只是大到足以使手动分配它们不切实际,您可以简单地使用散列:

values = {}
for i, value in enumerate(range(1,5)):
    values['s%i' % (i+1)] = value

>>> values
{'s3': 3, 's2': 2, 's1': 1, 's4': 4}
>>> values['s1']
1
于 2013-07-09T15:14:46.053 回答
0

您还可以使用 python 列表推导并获得一个列表作为结果。

my_list = [x for x in range(1,5)]
print(my_list)

要得到这个结果:

[1, 2, 3, 4]

您可以使用索引访问它

print("my_list[0] is: {}".format(my_list[0]))
于 2013-07-09T15:13:37.843 回答