Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表无循环_Python_List_Python 3.x_Readlines - Fatal编程技术网

Python列表无循环

Python列表无循环,python,list,python-3.x,readlines,Python,List,Python 3.x,Readlines,所以完全公开,这是hw,但我很难弄清楚这一点。我的教授在作业的这一部分有一个特别的挑战,我似乎不太明白。基本上,我试图读取一个非常大的文件,并将其放入一个列表中,该列表表示为电影推荐矩阵。她说,这可以在没有for循环的情况下完成,并建议使用readlines()方法 我一直在运行以下代码: movMat = [] with open(u"movie-matrix.txt", 'r', encoding="ISO-8859-1") as f: movMat.append(f.readlin

所以完全公开,这是hw,但我很难弄清楚这一点。我的教授在作业的这一部分有一个特别的挑战,我似乎不太明白。基本上,我试图读取一个非常大的文件,并将其放入一个列表中,该列表表示为电影推荐矩阵。她说,这可以在没有for循环的情况下完成,并建议使用readlines()方法

我一直在运行以下代码:

movMat = []
with open(u"movie-matrix.txt", 'r', encoding="ISO-8859-1") as f:
    movMat.append(f.readlines())
但是,当我在输出上运行diff时,它并不等同于原始文件。我该怎么做有什么建议吗

更新:经过进一步分析,我认为我的代码是正确的。我添加这个是为了使它成为一个元组

with open(u"movie-matrix.txt", 'r', encoding="ISO-8859-1") as f:
movMat = list(enumerate(f.readlines()))
更新2:因为人们似乎想要我阅读的文件,请允许我解释一下。这是一个从1到5的排名系统。如果一个人没有对一个文件进行排名,他们将用“;”表示。这是文件的第二行


"3;;;;3.3.2.3.5.1.3.3.4.4.3.2.2.3.4.4.3.3.4.2.3.4.3.3.2.3.4.5.3.2.1.4.4.3.4.3.2.3.2.4.1.2.5.4.4.4.2.3.3.4.4.3.3.1.4.4.2.3.4.3.4.4.1.5.4.3.2.1.4.3.5.4.3.2.3.5.3.2.3.4.3.4.4.4.3.4.3.1.3.2.4.3.3.3.4.3.4.3.3.4.4.3.3.3.1.3.3.5.4.4.3.4.3.3.3.4.5.4.2.2.3.4.3.4.3.3.3.3.4.5“

我想不出任何情况下
f.readlines()
会比仅仅使用
f
作为一个iterable更好。例如

with open('movie-matrix.txt', 'r', encoding="ISO-8859-1") as f:
    movMat = list(f)
(没有理由在Python3中使用
u'…'
符号——如果内置
open
采用
encoding=
…!-),则必须使用该符号)

是的,
f.readlines()
将等同于
list(f)
——但它更详细,更不明显,那么,的要点是什么呢

假设您必须将其输出到另一个文件,因为您提到“在输出上运行diff”,这将是

with open('other.txt', 'w', encoding="ISO-8859-1") as f:
    f.writelines(movMat)

没有非for循环选项:-)。

原始文件是什么?示例输入和预期输出是什么?看起来您可能需要使用
movMat.extend(f.readlines())
而不是
movMat.append(f.readlines())
。但是我们需要更多的信息,因为Marcin说得更多。好吧……经过进一步分析,我认为diff显示差异的原因是文本没有延伸到文本文件中那么远……换句话说,我的方法确实有效。相信我说的话。你不会(我认为这个网站无法正确处理文件信息)想把这个文件放在这里。至少给我们几行……好吧。好了:我猜这是她“pythonic”的方式“…但正如我所说的…我相信我的解决方案实际上是有效的。我应该制作一个列表列表,并将其转换为元组。这是我的新代码。使用open(u“movie matrix.txt”,“r',encoding=“ISO-8859-1”)作为f:movMat=list(enumerate(f.readlines())
readlines
的两种用法:你可以给它一个大小提示,它可能比通过iterable间接寻址快一点。我想不起我最后一次关心它了(到那时,仅仅使用
read
通常更好)但我相信,在某个地方,一定有人喜欢。是的。我也不太喜欢。但分数就是分数