将列表项分发给python中的变量

lev*_*eon 3 python

我是Python的新手,我正在寻找一种方法将列表中的项目分配到单个变量中.这一点是在Blender中将各个项目显示为文本对象.这是我到目前为止所拥有的,但我知道有一个更有效的方法来做这件事.

file = open('lyrics.conf')
data = file.read()
file.close()
b = data.split('/')
v = len(b)

if v >= 1:
  v1 = b[0]
if v >= 2:
  v2 = b[1]
if v >= 3:
  v3 = b[2]
if v >= 4:
  v4 = b[3]
if v >= 5:
  v5 = b[4]
if v >= 6:
  v6 = b[5]
if v >= 7:
  v7 = b[6]
if v >= 8:
  v8 = b[7]
if v >= 9:
  v9 = b[8]
if v >= 10:
  v10 = b[9]
Run Code Online (Sandbox Code Playgroud)

fly*_*eep 6

如果你真的想要个别变量,在某些时候你至少要做一个解包 v1,v2,v3,v4,v5,v6,v7,v8,v9,v10 = some_list

但你为什么要这样做呢?如果某事物是一个集合/事物清单,那么最好这样表示.


mik*_*iku 5

有了b你已经拥有你想要的物品的方便列表.只需访问它们,当您需要它们的索引时b[0], b[1], ....使用太多变量填充命名空间,其值可以在没有重大问题的情况下存储在容器中,这是一个设计缺陷(在我看来).


这是一种将新变量注入当前模块命名空间的方法,但它是邪恶的:

#!/usr/bin/env python

import sys

somelist = range(10)

for i, item in enumerate(somelist):
    setattr(sys.modules[__name__], 'v{0}'.format(i), item)

print v1 + v2
# => 3

print v1 * v2 * v3 * v4 * v5 * v6 - v7 * v8 - v9 + 11
# => ...
Run Code Online (Sandbox Code Playgroud)