我有20个变量,名为line1,line2,line3 ..直到第20行。在python中有一种方法可以使用for循环来顺序引用这些变量,即迭代它们吗?有这样的效果:
for i in range(1,21):
print(line+str(i))
虽然我知道这是错的。
答案 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