Python 终端输出中的额外字符和顺序更改?这是一个终端问题吗?
为什么我在列表结构的输出中看到额外的]字符,而这些字符应该只有一个列表列表?这是一个终端问题吗 特别是,它应该只有两个级别的列表,全局列表和其中的每个子列表 通过读取包含由“\n”分隔的整数值序列的文件而产生此结果的代码是: 所以这里一切看起来都很好(?) 但是,当我在中读取Python解释器中的数据输出时。然后我看到这样的事情: 注意额外的]就好像有不应该存在的内部列表一样。还要注意的是,尽管在数据中已排序,但编号似乎不符合顺序。 这里发生了什么事Python 终端输出中的额外字符和顺序更改?这是一个终端问题吗?,python,list,terminal,Python,List,Terminal,为什么我在列表结构的输出中看到额外的]字符,而这些字符应该只有一个列表列表?这是一个终端问题吗 特别是,它应该只有两个级别的列表,全局列表和其中的每个子列表 通过读取包含由“\n”分隔的整数值序列的文件而产生此结果的代码是: 所以这里一切看起来都很好(?) 但是,当我在中读取Python解释器中的数据输出时。然后我看到这样的事情: 注意额外的]就好像有不应该存在的内部列表一样。还要注意的是,尽管在数据中已排序,但编号似乎不符合顺序。 这里发生了什么事 要重建问题可以从这里下载Dorothea
要重建问题可以从这里下载Dorothea数据集: 然后启动Python解释器(我使用的是CoCalc中的解释器)并将上面的函数粘贴到那里
然后在dorothea_valid.data上调用read_datafile()并打印它(最好是在CoCalc中,在CoCalc中可以看到这个问题)。当向右滚动到底部时可以看到屏幕捕获的行,但是也可以从输出的其他部分看到问题。您正在创建内部列表。您在文件的每行使用一个列表,因此它在每行生成一个整数列表。如果希望将所有内容作为一个列表,请使用
extend
而不是append
:
for line in file:
data.extend(int(i) for i in line.split())
注意,我在这里使用的是生成器表达式,而不是列表。使用列表理解是一种浪费,因为它在内存中创建整个列表,只需阅读一次,然后就被丢弃。请将输出作为文本而不是图像发布。另外,您应该创建一个演示问题的。您没有
print
语句,因此我不确定您如何获得任何输出供我们查看。也许您需要data.extend([int(I)for I in line.split()])
。使用append
在名为data
的列表中,每一行都是自己的列表。谢谢。看到整数顺序混合的问题如何?同样,当用extend替换append时,我看到:。那么还有什么问题吗?或者CoCalc终端的输出可能有点奇怪?它看起来确实像终端问题。应该在输出的中间打印提示(> >)。如果某个基于web的IDE坏了,一点也不奇怪。尝试在本地使用python或ipython。
for line in file:
data.extend(int(i) for i in line.split())