Lista list = Lista dwuwymiarowa = tabela

0

Dobry,

Jestem mocno początkujący i proszę o wyrozumiałość. Praca z tabelą (nie tablicą) nie jest mi obca, ale mam pewien problem. Przekopałem trochę google i dalej nie jestem pewien. Wszystkie przykłady definiowały taką tabelę z góry założonych rozmiarach:

tu tablica 3x3:
tablica = [[None, None, None],
[None, None, None],
[None, None, None]]

tu tablica 6x4
tab = [6*[None]]*4

Co, jeśli nie nie znam jednego lub dwóch wymiarów takie tabeli? Jak obchodzi się ten problem? Mam używać Słownika, czy może dane zapisywać do pojedynczej Listy?
Chcę zapisywać dane do pliku przy użyciu csv (ale bez pomocy pandas).

Pozdrawiam i dziękuję za odpowiedzi.

1

W Pythonie listy nie maja stalej dlugosci.

>>> example = [1,2,3]
>>> example
[1, 2, 3]
>>> example.append(4)
>>> example
[1, 2, 3, 4]




>>> example2d = [ [], [], [] ]
>>> example2d
[[], [], []]
>>> example2d[1].append(3)
>>> example2d[1].append(4)
>>> example2d[0].append(99)
>>> example2d
[[99], [3, 4], []]
>>> example2d.append([1,3,3,7])
>>> example2d
[[99], [3, 4], [], [1, 3, 3, 7]]

0

Oooo, bardzo dziękuję.

Zakładam, że minimalne konieczne zdefiniowanie tabeli (listy dwuwymiarowej) ogranicza się do: tabela = [ [], [] ] ?

Mając tak zdefiniowaną tablicę:
tabela = [ ['','','','',''] , [] ]
tabela[0]=[1,2,3,4,5]
dodać nowy wpis, coś dającego podobny efekt jak: tabela[1][3]=x zamiast tego: tabela[1].append(['','','x','',''])

edit

>>> print(tabela)
[1,2,3,4,5]

>>> tabela[1].append(['','','x','',''])
>>> print(tabela)
[[1,2,3,4,5],['','','x','','']]

Czy można inaczej dodać 'x', typu gdyby działało coś takiego: tabela[1][3].append(x)

Może źle zabieram się do tematu, ale gównie chodzi mi o to, że pobieram z różnych miejsc dane do pojedynczej kolumny w tabeli.

0

dodać nowy wpis ale w tabela[1][3]=x zamiast tabela[1].append(['','','x','',''])

Nie rozumiem. Musisz jasniej powiedziec co jest celem

0
>>> print(tabela)
[1,2,3,4,5]

>>> tabela[1].append(['','','x','',''])
>>> print(tabela)
[[1,2,3,4,5],['','','x','','']]

Czy można inaczej dodać 'x', typu gdyby działało coś takiego: tabela[1][3].append(x)

Może źle zabieram się do tematu, ale gównie chodzi mi o to, że pobieram z różnych miejsc dane. Każde źródło zapisuje serię danych do pojedynczej kolumny w tabeli.

0

arr[1][3] = x

0

@stivens:

>>> tab=[['a','b','c'],[1,2,3]]
>>> tab[1][3]='x'
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
0

Chcesz podmienic wartosc czy dolozyc nastepna? Jedli dolozyc to wtedy append

0
>>> tab=[['a','b','c'],[1,2,3]]
>>> tab[1][3].append('x')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

Źle coś tłumaczę ?

0

Ale nie tab[1][3] tylko tab[0].append(x)

Macierz jest dwuwymiarowa a Ty probujesz to robic tak jakby byla 3d.

Z kontekstu wnioskuje tez, ze tam ma byc tab[ 0 ] - indeksujemy od 0.

0

chcę uzyskać taki efekt tablicy:

[[a,b,c,d,e,g,h,k,p],
[1,2,3,4,5,6,7,8,9],
[1,2,3,4,5,6,7,8,9],
[1,2,3,4,5,6,7,8,9],
.... itd
[1,2,3,4,5,6,7,8,9]]

Znam ilość kolumn, wierszy nie. Jak na początku tabela zawiera jeden wiersz [a,b,c,d,e,g,h,k,p] chciałbym dodawać następne wiersze, ale z wypełnioną tylko kolumną 'c'. Jakoś to obszedłem (append ['','','x','','','','','',''], ale może jest oczywista i prostsza metoda.

1 użytkowników online, w tym zalogowanych: 0, gości: 1