使用for循环和.format将列表列表转换为其子列表

时间:2017-05-02 22:52:46

标签: python list for-loop string.format

我想应用这个想法将列表列表分成单独命名的列表。说L = [[0,1,2],[3,4,5],[6,7,8]],我希望第一个列表([0,1,2])与您分开L0 = l[0](列表中的第一个列表标记为L0)。我的想法是:

for i in range(11):
  'l{}'.format(i) = l[i]

但错误信息是:can't assign to function call。我希望最终能实现这一目标:

for i in range(11):
    list( 'l{}'.format(i)) = l[i]

以便将字符串转换为列表。任何人都知道如何使这项工作或想法成为一个破产?

3 个答案:

答案 0 :(得分:1)

最简单的方法是使用元组打包/解包

L = [[0,1,2],[3,4,5],[6,7,8]]

L0, L1, L2 = L

print(L0)
print(L1)
print(L2)

结果:

[0, 1, 2]
[3, 4, 5]
[6, 7, 8]

您可以动态创建变量(但我认为这不是一个好主意)。在可以使用dict的情况下,不应使用动态创建变量。如果您不知道如何创建动态变量,则可能意味着您不应该这样做。有足够的信息在网上查找快速谷歌搜索知道原因。

这里说的是使用dict方法做你想做的事情。

L = [[0,1,2],[3,4,5],[6,7,8]]

my_dict = {}
for x in range(len(L)):
    my_dict[("L%s"%(x))] = L[x]


print (my_dict)

结果将是:

{'L0': [0, 1, 2], 'L1': [3, 4, 5], 'L2': [6, 7, 8]}

然后您需要做的就是与dict互动,从这些列表中获取您需要的任何内容。

答案 1 :(得分:0)

您可以使用exec执行字符串,就像它是Python代码一样:

for i in range(len(L)):
    exec('L{} = L[{}]'.format(i, i))
在你的情况下,

会给你变量L0,L1,L2。

答案 2 :(得分:0)

L = [[0,1,2],[3,4,5],[6,7,8]]
myDict = {}
for index,inner_list in enumerate(L):
  key = 'L'+str(index)
  myDict[key]=inner_list

print(myDict)  

<强> RESULT

{'L0': [0, 1, 2], 'L1': [3, 4, 5], 'L2': [6, 7, 8]}