Python list of lists 没有循环
Python list of lists no loops
所以完全公开,这是硬件,但我很难弄清楚这一点。我的教授在作业的这一部分有一个相当特殊的挑战,我似乎不太明白。基本上我正在尝试读取一个非常非常大的文件并将其放入表示为电影推荐矩阵的列表列表中。她说这可以在没有 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()))
Update2:既然人们似乎想要我正在阅读的文件,请允许我解释一下。这是一个从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
作为可迭代对象更好。也就是说,例如,
with open('movie-matrix.txt', 'r', encoding="ISO-8859-1") as f:
movMat = list(f)
(没有理由在 Python 3 中使用 u'...'
表示法——如果内置 open
采用 encoding=
...,则必须使用它!- ).
是的,f.readlines()
等同于 list(f)
-- 但它更冗长且不太明显,那么,要点 是什么?!
假设您必须将其输出到另一个文件,因为您提到了 "running diff on the output",那就是
with open('other.txt', 'w', encoding="ISO-8859-1") as f:
f.writelines(movMat)
那里没有非 for 循环替代方案:-)。
所以完全公开,这是硬件,但我很难弄清楚这一点。我的教授在作业的这一部分有一个相当特殊的挑战,我似乎不太明白。基本上我正在尝试读取一个非常非常大的文件并将其放入表示为电影推荐矩阵的列表列表中。她说这可以在没有 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()))
Update2:既然人们似乎想要我正在阅读的文件,请允许我解释一下。这是一个从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
作为可迭代对象更好。也就是说,例如,
with open('movie-matrix.txt', 'r', encoding="ISO-8859-1") as f:
movMat = list(f)
(没有理由在 Python 3 中使用 u'...'
表示法——如果内置 open
采用 encoding=
...,则必须使用它!- ).
是的,f.readlines()
等同于 list(f)
-- 但它更冗长且不太明显,那么,要点 是什么?!
假设您必须将其输出到另一个文件,因为您提到了 "running diff on the output",那就是
with open('other.txt', 'w', encoding="ISO-8859-1") as f:
f.writelines(movMat)
那里没有非 for 循环替代方案:-)。