2017-01-14 324 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