Tengo lo siguiente:

[line.split(' ') for line in [
        line.rstrip() for line in file.readlines()]]

Que devuelve una lista de listas de cadenas. Sé que podría hacer lo siguiente para convertirlo en una lista de números enteros:

    for row in tree:
        row[:] = map(int, row[:])

¿Se puede hacer en línea mientras se procesan las líneas?

Algunos datos de muestra:

59
73 41
52 40 09
26 53 06 34
10 51 87 86 81
2
Noel Yap 26 ago. 2020 a las 16:44

1 respuesta

La mejor respuesta

Usted podría usar

data = """
59
73 41
52 40 09
26 53 06 34
10 51 87 86 81
"""

result = [[int(x) for x in line.split()] for line in data.split("\n") if line]
print(result)

Lo que produce

[[59], [73, 41], [52, 40, 9], [26, 53, 6, 34], [10, 51, 87, 86, 81]]

Tenga en cuenta que esto solo funciona si solo tiene números enteros.
Para tener un poco de gestión de errores, puede utilizar:

data = """
59 some junk here
73 41
52 40 09
26 53 06 34
10 51 87 86 81
"""

def makeint(line):
    for x in line.split():
        try:
            yield int(x)
        except ValueError:
            pass

result = [[x for x in makeint(line)] for line in data.split("\n") if line]
print(result)
1
Jan 26 ago. 2020 a las 13:57