如何使用for循环迭代编号变量?

时间:2015-10-15 16:16:00

标签: python python-3.x for-loop

我有20个变量,名为line1,line2,line3 ..直到第20行。在python中有一种方法可以使用for循环来顺序引用这些变量,即迭代它们吗?有这样的效果:

for i in range(1,21):
    print(line+str(i))

虽然我知道这是错的。

4 个答案:

答案 0 :(得分:3)

不要使用这样的单独变量。使用列表。拥有一堆类似命名的变量是anti-pattern

lines = []

# add 20 strings to the list

for line in lines:
    print(line)

答案 1 :(得分:1)

将变量移动到列表中。

因此,如果line1 =“foo”和line2 =“boo”,请改为:

1: foo
2: boo 

会给你一个输出:

for i in a:
    print(i)

或者,如果您只想迭代该数组,那么就这样做:

foo
boo

只会输出:

+-------------------+
| **Cell Content:** |
+===================+
| # of People       |
+-------------------+

答案 2 :(得分:1)

我同意其他人的说法,最好转到列表,但可以使用eval

>>> line1 = "This"
>>> line2 = "isn't"
>>> line3 = "Recommended"
>>> for i in range(1,4):
    print(eval("line" + str(i)))


This
isn't
Recommended

除了使用列表更自然之外,我们也不推荐这样做,因为eval can be dangerous。虽然eval确实有一些用途并且可以安全使用(虽然永远不会安全地使用用户输入的字符串),但避免重构代码并不是一个有效的用例。因此 - 除了使您的代码更易于阅读和更易于维护之外,使用列表或词典还可以使您的代码更安全,因为那样您就不太可能以骇人的方式使用eval

答案 3 :(得分:0)

lst = ['line0','line1','line2']

for line_num, line_name in enumerate(lst):
    print 'Line str: %s, Line number: %s' % (line_num, line_name)

这将打印: 行str:line0,行号:0 行str:line1,行号:1 行str:line02,行号:2