Python:具有列表列表的列表理解

我将如何在列表理解中编写以下代码?


grid = open('some_file.txt', 'r')

lines = [line.strip('\n') for line in grid]


list_of_lists = []


for line in lines:

    elms = [int(elm) for elm in line.split(' ')]

    list_of_lists.append(elms)

我的文件如下所示:


3 8 6 9 4

4 3 0 8 6

2 8 3 6 9

3 7 9 0 3

意思就是:


grid = '3 8 6 9 4\n4 3 0 8 6\n2 8 3 6 9\n3 7 9 0 3'


慕无忌1623718
浏览 118回答 3
3回答

PIPIONE

在这里尝试一下,首先拆分每一行,您将获得一个数字列表作为字符串,因此map可以使用函数将其更改为int:with open('file.txt', 'r') as f:    k = [list(map(int,i.split())) for i in f.readlines()]    print(k)

米脂

你并不需要应用str.strip和str.split独立。相反,将它们组合在一个操作中。列表推导式是通过定义一个列表元素,然后在循环上进行迭代来构建的for。另请注意,str.strip不带参数将与\n空格一样处理。同样,str.split没有参数的情况下也会被空格分隔。from io import StringIOx = StringIO("""3 8 6 9 44 3 0 8 62 8 3 6 93 7 9 0 3""")# replace x with open('some_file.txt', 'r')with x as grid:    list_of_lists = [[int(elm) for elm in line.strip().split()] for line in grid]结果:print(list_of_lists)[[3, 8, 6, 9, 4], [4, 3, 0, 8, 6], [2, 8, 3, 6, 9], [3, 7, 9, 0, 3]]使用内置功能,使用起来效率更高map:list_of_lists = [list(map(int, line.strip().split())) for line in grid]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python