簡體   English   中英

如何使用for循環遍歷帶編號的變量?

[英]How can I use a for loop to iterate through numbered variables?

我有一個名為line1,line2,line3 ..直到line20的20個變量。 python中是否有一種方法可以使用for循環依次引用每個變量,即遍歷它們? 達到此效果的方法:

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

雖然我知道那是錯誤的。

不要像這樣使用單獨的變量。 使用清單。 具有一堆名稱相似的變量是一種反模式

lines = []

# add 20 strings to the list

for line in lines:
    print(line)

將變量移到列表中。

因此,如果line1 =“ foo”和line2 =“ boo”,請執行以下操作:

a = ["foo", "boo"]

for i, v in enumerate(a):
    print("{}: {}".format(i + 1, v))

將為您提供如下輸出:

1: foo
2: boo 

或者,如果您只想迭代該數組,則只需執行以下操作:

for i in a:
    print(i)

它將簡單地輸出:

foo
boo

我同意其他人的觀點,那就是最好移至列表,但您可以使用eval

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


This
isn't
Recommended

除了使用列表更自然的觀點之外,也不建議這樣做,因為eval可能很危險 盡管eval確實有一些用途,並且可以安全使用(盡管永遠不能在用戶輸入的字符串上安全使用),但避免重構代碼不是有效的用例。 因此,除了使代碼更易於閱讀和維護之外,使用列表或字典還可以使代碼更安全,因為那樣一來,您就不太可能以駭人的方式使用eval

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

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

這將打印:Line str:line0,Line number:0 Line str:line1,Line number:1 Line str:line02,Line number:2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM