2017-01-14 322 views
-2

我檢查了類似的問題,但找不到答案。將字符串值轉換爲列表

Fnactot = [] 
Fnacdebut = 0 
Fnacnombre = 4 
Fnac = 0 
Fnac1 = ['major lazer', 'goooya', 1000] 
Fnac2 = ['phoenix', 'wolfgang', 1300] 
Fnac3 = ['jain', 'makemba', 1150] 
Fnac4 = ['dj shadow', 'aphex', 2100] 

while Fnacdebut < Fnacnombre : 
    Fnacdebut = Fnacdebut + 1 
    fnac = 'Fnac'+str(Fnacdebut) 
    print fnac 

我相信答案是非常簡單....但我抓我的頭有..

我想打印我的列表Fnac1,Fnac2,..... 。但是我打印fnac ='Fnac'+ str(Fnacdebut)的字符串值。 如何CA,我轉換FNAC的字符串結果返回給我列出的名字......

在此先感謝...

回答

0

不要試圖產生變量名。它涉及使用eval評估變量名稱,這是不好的做法。

剛剛從一開始就建立一個連貫的數據集

只是用列表的列表:

fnac = [['major lazer', 'goooya', 1000], 
['phoenix', 'wolfgang', 1300],['jain', 'makemba', 1150],['dj shadow', 'aphex', 2100]] 

則:

for f in fnac: 
    print(f) 

或(有顯示屏上更好的控制,並且由於列表中有整數,所以必須將它們轉換爲字符串):

for f in fnac: 
    print(",".join(str(x) for x in f)) 
+0

嗨,謝謝!是的,已經想到你的答案了,但我的問題是更一般的瞭解如何我可以得到一個字符串回到列表的名稱。 我想知道我怎麼能得到: 打印FNAC> [ '主要拉澤', 'goooya',1000] ,而不是打印FNAC> Fnac1 任何想法? – MeshellT

+0

這只是不好的做法。它導致使用'eval',這是一個主要的安全問題。 –

+0

OK不好意思! 非常感謝 – MeshellT

0

那麼,有一種方法可以做到這一點:print(locals()[fnac])將打印列表的內容。

不過你在一個又一個列表或元組關閉存儲列表更好,通過循環新名單打印出來:

fnacs = (['major lazer', 'goooya', 1000], 
     ['phoenix', 'wolfgang', 1300], 
     ['jain', 'makemba', 1150], 
     ['dj shadow', 'aphex', 2100]) 

for i, fnac in enumerate(fnacs): 
    print("Fnac%d" % i, fnac) 
0
Fnactot = [] 
Fnacdebut = 0 
Fnacnombre = 4 
Fnac = 0 
Fnac1 = ['major lazer', 'goooya', 1000] 
Fnac2 = ['phoenix', 'wolfgang', 1300] 
Fnac3 = ['jain', 'makemba', 1150] 
Fnac4 = ['dj shadow', 'aphex', 2100] 

while Fnacdebut < Fnacnombre : 
    Fnacdebut = Fnacdebut + 1 
    fnac = 'Fnac'+str(Fnacdebut) 
    print globals()[fnac] 

這樣做,但更好的方法是:

lst1 = ['major lazer', 'goooya', 1000] 
lst2 = ['phoenix', 'wolfgang', 1300] 
lst3 = ['jain', 'makemba', 1150] 
lst4 = ['dj shadow', 'aphex', 2100] 
all_lists = [lst1, lst2, lst3, lst4] 

for lst in all_lists: 
    print lst 
+0

好的非常感謝! – MeshellT