列入子列表的列表列表

时间:2013-06-28 12:33:05

标签: python list python-2.7

我有一个列表,我用作数据容器。我已经把所有的调试代码都留了下来,一切都进入控制台,所以我可以完成它,这解释了一些更冗余的打印语句。

它是通过迭代并制作一个看起来如下的长列表来创建的:

[['Arsenal', 2.47, 1.2, 0.89, 'Chelsea', 2.15, 0.8, 1.21,...

子列表都是统一长度(9个元素),所以我使用以下内容来组合它,taken from here

# This function should chunk the 'file', as when we run the above code, 
# we'll end up with one incredibly long list that contains every team on the same line
def chunker(seq, size):
    return (seq[pos:pos + size] for pos in xrange(0, len(seq), size))

for group in chunker(league_stats, 9):
   print repr(group)
   final_stats.append(repr(group))
   print "printing final stats"
   print final_stats
   print "and here's a line break" 

它应该是这样的:

[['Arsenal', 2.47, 1.2, 0.89], ['Chelsea', 2.15, 0.8, 1.21]...]

但是,如果我打印它,它显示为:

["['Arsenal', 2.47, 1.2, 0.89]", ['Chelsea', 2.15, 0.8, 1.21|]..."]

如果我遍历它,它似乎按预期显示

所以这似乎使每个整个子列表成为字符串,而不是列表,是吗?这有两个奇怪的结果 - 例如,如果我使用final_stats [0] [2]访问元素,它会给我一个'A'而不是'Arsenal',这是我所期待的。

另一方面当然是我不能对列表元素运行逻辑操作 - 什么是列出长列表的最佳方法,或阻止这种情况发生?

如果你需要完整的代码(为简洁起见,这里不包括),那么它是here - 我怀疑这个问题是由于这篇文章中的问题而无意中引起的。

有人在回答中建议使用词典作为更好的数据容器 - 我对列表结构非常满意,并且对我想做的事情感觉(对我来说是一个新手) - 这些数据结构是总是统一的大小,所以我不想改变数据类型,除非我真的必须。我认为这是一个有用的事情,我会长期考虑。

1 个答案:

答案 0 :(得分:2)

repr()获取字符串的表示形式。即:

print repr("""Hello!
this is a test string
yay.""")

返回:

'Hello!\nthis is a test string\nyay.'

在你的代码中,它将列表转换为字符串,这就是为什么当你[0][2]得到一个角色而不是你期望的东西时。

无需在代码中调用它。只需正常附加chuncked列表。