我想在Python中为循环输出值分配变量。
onetoten = range(1,5)
for count in onetoten:
print (count)
以上for循环的输出如下
1
2
3
4
我想将此输出分配给变量列表,例如s1 = 1
,s2 = 2
,s3 =3
和s4 = 4
。
但是列表到4之前没有具体的数字。它可能会根据脚本中的先前输出而有所不同。因此,对于for循环的输出,变量的数量也必须增加或基于应该使用的变量的输出数量。请帮忙。
之前我问过相同类型的问题,我得到了使用枚举的响应,但这不完全是python,我在Jython中使用脚本,所以我没有在Jython中枚举。
答案 0 :(得分:4)
我想将此输出分配给变量列表,例如
s1 = 1
,s2 = 2
,s3 =3
和s4 = 4
。但是列表在4之前没有具体的数字。它可能会根据脚本中的先前输出而有所不同。
这意味着您不想要使用多个变量。将值存储在序列s
中。您可以使用sn
代替s[n-1]
:
>>> s = range(1,5)
>>> s[0]
1
>>> s[1]
2
etc.
如果您需要更灵活的命名,即特定的标识符 - 值对,那么您应该考虑使用已建议的dict
。
答案 1 :(得分:2)
如果您知道变量的数量,请使用序列解包:
>>> s1,s2,s3,s4 = range(1,5)
>>> s1
1
>>> s2
2
>>> s3
3
>>> s4
4
如果您正在谈论创建动态变量,那么这是一个坏主意,我更喜欢一个字典。
>>> dic = {}
>>> for x in range(1,5):
... dic['s' + str(x)] = x
...
>>> dic['s1']
1
>>> dic['s2']
2
您可以使用globals()
在python中创建动态变量,但不建议:
>>> globals()['foo'] = 'bar'
>>> foo
'bar'
答案 2 :(得分:0)
您还可以使用python list comprehension并将结果列表。
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]))
答案 3 :(得分:0)
如果您需要创建的变量数量不为您所知,或者只是大到足以让手工分配它们变得不实用,您只需使用哈希:
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