0

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

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

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

子列表都是统一长度(9 个元素),所以我使用以下内容对其进行分块,取自此处

# 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”,这是我所期望的。

当然,另一个是我无法对列表元素运行逻辑操作——将长列表分块或阻止这种情况发生的最佳方法是什么?

如果您需要完整的代码(为简洁起见,此处未包含),那么它就在这里 - 我怀疑这个问题是由这篇文章中的问题无意中引起的。

该答案中的某人建议使用字典作为更好的数据容器-我对列表结构非常满意,并且(对我作为新手而言)我想做的事情感觉更简单-这些数据结构始终是统一的大小,所以我不想更改数据类型,除非我真的必须这样做。我认为这是一件有用的事情,我会长期研究。

4

1 回答 1

2

repr()获取字符串的表示。IE:

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

回报:

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

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

无需在您的代码中调用它。只需正常附加分块列表即可。

于 2013-06-28T12:36:12.373 回答