-5

如何创建一个将列表拆分为每个变量的函数

例如:如果每个列表都有“n”个元素

mylist = [var,var1,var2,var3]
anotherlist = [var,var1,var2,var4,var5]

--> 结果

创建一个函数来拆分这些变量列表

split(mylist) --> 
x = var
x1 = var1
x2 = var2
: 
xn = varn
4

4 回答 4

1

首先,在我看来,问题是关于动态分配变量。其次,这是一个坏主意。您应该改用字典。不过,这里有一个你不应该做的例子,但它似乎回答了你的问题。

In [196]: def assign_variables(mylist):
     ...:     for idx,item in enumerate(mylist):
     ...:         var='x'+str(idx)
     ...:         globals()[var]=item
     ...:         

In [197]: mylist=['var','var1','var2','var3']

In [198]: assign_variables(mylist)

In [199]: x1
Out[199]: 'var1'

In [200]: x2
Out[200]: 'var2'

使用 dict 你可以这样尝试:

>>> def var_dict(mylist):
...     d={}
...     for idx,item in enumerate(mylist):
...         var='x'+str(idx)
...         d[var]=item
...     return d
... 
>>> mylist=['var','var1','var2','var3']
>>> mydict=var_dict(mylist)
>>> mydict
{'x0': 'var', 'x1': 'var1', 'x2': 'var2', 'x3': 'var3'}
>>> mydict['x1']
'var1'
>>> 
于 2012-09-27T21:58:48.827 回答
1

我不太明白你的问题,但你的意思是这样的:

def print_var(variable_list):
    for i, element in enumerate(variable_list):
        print 'x' + str(i) + ' = ' + element

mylist = ['var','var1','var2','var3']
anotherlist = ['var','var1','var2','var4','var5']
print_var(mylist)
print_var(anotherlist)
于 2012-09-27T21:24:21.903 回答
1

这是可能的,就像在“可行”中一样——但它不太可能对任何事情有用。如果您的列表的长度一开始是未知的,那么如果您不知道代码中可能值的范围,那么使用名为“x”的变量会有多好。

Python 作为一门语言,其设计目的是让您拥有具有已知名称的变量——您遇到的任何动态数据都应保存在动态数据结构中,例如字典,或者,因为在这种情况下,您拥有的唯一标识符是索引,列表本身。

换句话说,你最好:

mylist = [var,var1,var2,var3]
mylist[0]
mylist[1]
...

比你要求的 - 因为你可以检查 mylist 的长度,或者简单地用 for 语句循环它的元素。

也就是说,重要的是要记住 Python 确实具有 assignemtn 解包功能,因此如果您的列表具有已知长度,您可以简单地执行以下操作:

mylist = [var1, var2, var3, var4]
x1, x2, x3, x4 = mylist
于 2012-09-27T21:25:08.763 回答
1

因为你的问题很模糊。我正在应用我从中可以理解的内容,即您想将另一个列表中的变量分配给 mylist 中的名称。在这种情况下,您将需要使用这样的字典。

mydict = {}
for i in xrange(len(mylist)):
    mydict[mylist[i]] = anotherlist[i]

然后,您可以自由地将mydictmylist作为键的值一起使用。

于 2012-09-27T21:26:01.013 回答