Python:一次分配多个变量

时间:2015-06-30 12:50:18

标签: python variables

a,b,c,d,e,f,g,h,i,j = ''.join(doc[a1]),''.join(doc[a2]),''.join(doc[a3]),''.join(doc[a4]),''.join(doc[a5]),''.join(doc[a6]),''.join(doc[a7]),''.join(doc[a8]),''.join(doc[a9]),''.join(doc[a10])

如果需要分配超过(比方说)100个左右的值,我如何分配上述值?

3 个答案:

答案 0 :(得分:4)

您的代码有点令人困惑。这样做会更清楚:

a = ''.join(doc[a1])
b = ''.join(doc[a2])
c = ''.join(doc[a3])
d = ''.join(doc[a4])
e = ''.join(doc[a5])
f = ''.join(doc[a6])
g = ''.join(doc[a7])
h = ''.join(doc[a8])
i = ''.join(doc[a9])
j = ''.join(doc[a10])

您正在使用的语法通常用于以下情况:

str_ = "a,b"
a, b = str_.split(",")
# a = "a", b = "b"

你想要的声音听起来像阵列可以处理,但是你必须把a1,a2,...,a10变成一个数组。

假设a1,a2,...,a10位于名为a的数组中,您可以通过执行以下操作将所需内容输入到名为b的数组中:

b = [''.join(doc(a_part)) for a_part in a]

答案 1 :(得分:1)

在这种情况下,您可以使用赋值,pythonic方式使用字典。如果doc是一个字典,您可以循环其值并使用enumerate创建字典:

d={}
for i,j in enumerate(doc.values()):
  d['a{}'.format(i)]=''.join(j)

如果doc不是字典而且是另一种可迭代对象,则可以自行循环。

你也可以在词典理解中做到这一点:

d={'a{}'.format(i):''.join(j) for i,j in enumerate(doc.values())}

然后您可以使用索引来访问变量:

print d['a1'] # or d['an'] 

答案 2 :(得分:1)

这是一种非常难以理解的方式。另外,你试图手动做一些你应该尝试以编程方式做的事情。循环和列表是你的朋友。您不希望必须跟踪那么多变量。相反,跟踪列表中的项目更方便。你会得到更好的服务:

new_list = []
for key in doc:
    new_list.append(''.join(doc[key]))

可以更简洁地写成

new_list = [''.join(doc[key]) for key in doc]

或如果doc是列表:

new_list = [''.join(item) for item in doc]