在循环Python中分配变量

时间:2015-04-22 18:21:35

标签: python for-loop dynamic-variables

我有这条:

As, Bs, Cs, Ds, Es = ([] for i in range(5))
for line in infile:
   line = line.rstrip()
    a, b, c, d, e = line.split('\t')
    As += [a]
    Bs += [b]
    Cs += [c]
    Ds += [d]
    Es += [e]

由于我有的不仅仅是5,所以我想用一个占用较少行代码的循环来完成这一操作。类似的东西:

As, Bs, Cs, Ds, Es = ([] for i in range(5))
dynamic_variable_list = [As, Bs, Cs, Ds, Es]
    for line in infile:
        line = line.rstrip()
        for i in range(len(line.split('\t'))):
            dynamic_variable_list[i] += line.split('\t')[i]

在我的情况下,在列表中存储个别字符,而:

dynamic_variable_list[i] += line.split('\t')

将所有制表符分隔的条目存储到dynamic_variable_list的每个变量中。我需要的是将所有制表符分隔的条目存储在单独的变量中,如上面的示例所示。

1 个答案:

答案 0 :(得分:1)

dynamic_variable_list[i] += line.split('\t')[i]

可以改写为

As += a

而不是

As += [a]

像以前一样用括号括起来,或使用append。或者更确切地说,拆分列表然后使其更清晰。

dynamic_variable_list = [As, Bs, Cs, Ds, Es]
    for line in infile:
        columns = line.rstrip().split('\t')
        assert(len(columns)==len(dynamic_variable_list))
        for index, col in enumerate(columns):
            dynamic_variable_list[index].append(col)