列表了解python

列表了解python,python,list,math,Python,List,Math,我很困惑,我应该拿一个用户输入的文件,把文本文档中的分数转换成一个列表 我遇到的问题是,当我把它转换成一个列表时,它会在一个变量下给出三个单独的列表 def main(): file = input("Enter a filename: ") file1 = open(file, "r") Scores = (file1.readlines()) for line in Scores: scores = [eval(i) for i in line

我很困惑,我应该拿一个用户输入的文件,把文本文档中的分数转换成一个列表

我遇到的问题是,当我把它转换成一个列表时,它会在一个变量下给出三个单独的列表

def main():
    file = input("Enter a filename: ")
    file1 = open(file, "r")
    Scores = (file1.readlines())
    for line in Scores:
        scores = [eval(i) for i in line.split()]

        print(scores)
我把它作为一个输出:

[34, 34, 54, 14, 32, 24, 31, 34, 53, 74, 22, 29]
[54, 34, 14, 14, 32, 24, 31, 34, 53, 74, 22, 29]
[66, 53, 19, 45, 39, 72, 51, 46, 64, 33, 44, 55]

请帮我把这张表变成一个完整的列表,这样我就可以显示有多少个分数,所有分数的总数和平均值。

这将满足您的要求:

def main():
    file = input("Enter a filename: ")
    file1 = open(file, "r")
    Scores = (file1.readlines())
    scores_list = []
    for line in Scores:
        scores_list.extend([eval(i) for i in line.split()])

    print(scores_list)
诀窍是用文件中每一行的新列表扩展现有列表

请注意,这里还有其他改进机会。。。e、 g.您可以使用上下文管理器管理正确关闭文件:

 def main():
    filename = input("Enter a filename: ")
    scores_list = []
    with open(filename, "r") as file1:
        for line in file1:
            scores_list.extend([eval(i) for i in line.split()])

    print(scores_list)

最后(可能也是最重要的),您可以将
eval
替换为
int
float
(取决于输入),从而使程序更加安全。实际上,
eval
将在您的计算机上运行任何不受信任的代码。为了演示,在文本文件中添加一行
exit()
,注意程序在执行任何操作之前退出。攻击者可以利用此进行恶意操作(例如,如果脚本以足够高的权限运行,则会擦除您的主目录甚至整个驱动器)。

您可以使用列表理解作为一种方法

file = input("Enter a filename: ")
with open(file, "r") as f:
    lines = f.readlines()
    scores = [int(i) for line in lines for i in line.split()]
    print(scores)

1.为什么要使用
eval
(例如
int
)呢?2.你想把它们放在一个单一的列表中的尝试是什么?我的尝试是:分数中的:for行。它只给了我3张单子,我不知道他们的名字,所以不能把他们加在一起。你说“知道他们的名字”是什么意思?!感谢那些帮助我的人@jonrsharpe我想要的只是帮助,显然其他人理解我的意思,并且看到了我的尝试,所以如果你的意图不是帮助和帮助别人,请不要发表评论criticize@user6263406如果其中一个答案解决了你的问题,请单击投票箭头下的复选标记将其标记为已接受。似乎OP希望在空格上拆分,而不是
,“
FWIW,您也可以将
[]
放入
。扩展
分数列表。扩展(int(i)代表行中的i.split())
。您可能应该扩展您所说的“更安全”。。。
exit()
分数就是一个很好的例子。