我有一个列表,我用作数据容器。我已经把所有的调试代码都留了下来,一切都进入控制台,所以我可以完成它,这解释了一些更冗余的打印语句。
它是通过迭代并制作一个看起来如下的长列表来创建的:
[['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 - 我怀疑这个问题是由于这篇文章中的问题而无意中引起的。
有人在回答中建议使用词典作为更好的数据容器 - 我对列表结构非常满意,并且对我想做的事情感觉(对我来说是一个新手) - 这些数据结构是总是统一的大小,所以我不想改变数据类型,除非我真的必须。我认为这是一个有用的事情,我会长期考虑。
答案 0 :(得分:2)
repr()
获取字符串的表示形式。即:
print repr("""Hello!
this is a test string
yay.""")
返回:
'Hello!\nthis is a test string\nyay.'
在你的代码中,它将列表转换为字符串,这就是为什么当你[0][2]
得到一个角色而不是你期望的东西时。
无需在代码中调用它。只需正常附加chuncked列表。