我有一个用作数据容器的列表列表。我把所有的调试代码都留在了里面,一切都进入控制台,这样我就可以完成它,这解释了一些更冗余的打印语句。
它是通过迭代并制作一个长长的列表来创建的,如下所示:
[['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”,这是我所期望的。
当然,另一个是我无法对列表元素运行逻辑操作——将长列表分块或阻止这种情况发生的最佳方法是什么?
如果您需要完整的代码(为简洁起见,此处未包含),那么它就在这里 - 我怀疑这个问题是由这篇文章中的问题无意中引起的。
该答案中的某人建议使用字典作为更好的数据容器-我对列表结构非常满意,并且(对我作为新手而言)我想做的事情感觉更简单-这些数据结构始终是统一的大小,所以我不想更改数据类型,除非我真的必须这样做。我认为这是一件有用的事情,我会长期研究。