Skip to main content
 首页 » 编程设计

Python之从文本文件读取并放入列表

2025年05月04日11www_RR

如标题所示,我一直在尝试从文件中读取文本,将其转换为 int 并将其存储在列表中。我的文本文件如下所示:

1,2 
3,4 
5,6 

我想读取这个文件,将每对数字放入一个列表 m 中,然后将这些列表存储在一个更大的列表 lis 中。这是我的尝试:

def read_file():         
    lis = [] 
    m = [0,0] 
 
    with open("data.txt") as f: 
        for line in f: 
            m[0], m[1] = line.split(",")    # assign to list m 
            m[0] = int(m[0])   # cut off '\n' and for later use 
            m[1] = int(m[1])    
            lis.append(m)      # store in lis 
 
    print lis 

我希望 lis 是这样的:

[[1, 2], [3, 4], [5, 6]] 

但相反,它是:

[[5, 6], [5, 6], [5, 6]] 

我试过 insert 而不是 append 但似乎这不是它有问题的地方。我需要一些帮助 - 提前谢谢你!

请您参考如下方法:

您在循环的每次迭代中重复使用相同的列表 m,每次都覆盖在前一次迭代中设置的值。最后,lis 包含对同一个列表的许多引用。

相反,在循环中为m整体分配一个新值:

for line in f: 
    m = [0,0] 
    m[0], m[1] = line.split(",") 
    m[0] = int(m[0]) 
    m[1] = int(m[1])    
    lis.append(m) 

或更短:

for line in f: 
    m = line.split(",") 
    m[0] = int(m[0]) 
    m[1] = int(m[1])    
    lis.append(m) 

或者更短,使用 map :

for line in f: 
    m = list(map(int, line.split(","))) 
    lis.append(m) 

或者更短,使用列表理解:

lis = [list(map(int, line.split(","))) for line in f]