Python - macierz

Witam,

Mam macierz postaci:

1 2 3 4 5
11 22 11 33 55
12 2 3 11 55

jest zapisana w stringu, wiersze kończą sie enterami, w jaki sposób utworzyć liste liczb w postaci [[1 2 3 4 5][11 22 11 33 5][12 2 3 11 55]] ?

Udało mi sie to zrobić, ale liczby dwucyfrowe były rozdzielane na cyfry, natomiast przy użyciu splita liczby były ok, lecz nie mogłem wyłapać enterów i tym samym nie mogłem zapisać kazdego wiersza osobno do listy.

EDIT:

Tak czytam to z pliku, którego zawartość wygląda mniej więcej tak jak napisałem na początku i musze to zapisać do listy list.

Z tego co widzę,to co napisał Manveru będzie działało tak jak potrzebuje. Dzięki za pomoc

2 lata temu | edytowane przez: raphpl 13371727

  • Czytasz to z pliku? Bo nie sprecyzowałeś.

    matrix = "1 2 3 4 5\n
    11 22 11 33 55\n\
    12 2 3 11 55\n"
    m = []
    for w in matrix.split("\n"):
        e = w.split()
            if len(e) > 0:
            m += [e]
    print m
    

    Przy czym m to tablica Pythona. Jeżeli chcesz to wydrukować ze spacjami, to jeszcze się musisz pobawić w prawidłowe drukowanie - ale myślę, że to łatwe:

    print "["+"\n".join(["["+" ".join(x)+"]" for x in m])+']'
    

    A - nie konwertuję to napisów na liczby int i z powrotem - warto pamiętać o tym.

  • >>> INPUT = """1 2 3 4 5
    ... 11 22 11 33 55
    ... 12 2 3 11 55"""
    >>> INPUT.splitlines()
    ['1 2 3 4 5', '11 22 11 33 55', '12 2 3 11 55']
    >>> [ line.split() for line in INPUT.splitlines()]
    [['1', '2', '3', '4', '5'], ['11', '22', '11', '33', '55'], ['12', '2', '3', '11', '55']]
    

    Nie nazwałbym tego "macierzą". To jest lista list. Prawdziwe macierze znajdziesz w pakiecie takim jak numpy.

  • Gdybyś miał tylko elementy poodzielane przecinkami to robisz eval(macierz) i masz gotową listę list

Zaloguj się, aby dodać swoją odpowiedź