For Loop输出到变量或Python中的列表

时间:2013-07-09 15:05:51

标签: python jython

我想在Python中为循环输出值分配变量。

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

以上for循环的输出如下

1
2
3
4

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

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

4 个答案:

答案 0 :(得分:4)

  

我想将此输出分配给变量列表,例如s1 = 1s2 = 2s3 =3s4 = 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