2014-02-15 31 views
0

这个帖子下面我刚才的问题在这里: Split list into different variablesPython - 将不定数量的元素存储在列表中?

我意识到,我必须元素的多个数据块中的列表,这些可能并不总是被限制为3。例如,我可以有:

[('love', 'yes', 'no'), ('valentine', 'no', 'yes'), ('day', 'yes','yes'), 
    ('house', 'yes','no'), ('car', 'yes','yes')] 

[('love', 'yes', 'no'), ('valentine', 'no', 'yes'), ('day', 'yes','yes'), 
    ('house', 'yes','no'), ('car', 'yes','yes'), ('balloon', 'no','no'), 
    ('roses', 'yes','yes')] 

var1, var2, var3 = listobj只适用于这些元素块中的三块。但更多的是,一般来说,我将如何将所有这些元素块存储到不同的变量中?

+0

你真的需要存储_different_变量中的所有元素吗?难道不能从列表中选择一个元素吗? – devnull

+0

是的,这将使我更容易处理大块数据 – Eagle

+0

不,它不会。正如你所说:你并不总是有三个元素,所以你将不得不处理可变数量的变量。这并不容易。 – poke

回答

4

变量在您的代码中显式声明,因此您可以使用的变量数量是确定的,没有办法将未知长度的元组(或列表)解包到确定数量的变量。但是你可以用*使extended iterable unpacking在python3:

>>> a, *b, c = range(5) 
>>> a 
0 
>>> c 
4 
>>> b 
[1, 2, 3] 
+0

好主意。但是,我使用这一行解决了我的问题:'allCols = [[] for x in range(0,colCount)]'其中'colCount'是行中的列数。然后,我只是指出我想在'allCols [colCount-1]'中访问的索引来提取最后一个元素集合或任何集合。 – Eagle

+0

@Eagle是的,这是引用可迭代元素的常用方法 – zhangxaochen

0

如果listobj的长度是不确定的,直接把它作为一个列表,而不是拆开包装成变量。

拆开不同大小的列表并没有任何意义。假设您可以动态地将listobj解包为尽可能多的变量(如需要,就像var1,var2,var3 ...一样)。你将如何编写消耗这些变量的代码?你突然需要知道他们的号码和一些聪明的方式来索引一个特定的,或循环他们。猜猜看,这就是为什么你首先要列出名单。

相关问题