Trojrozměrný seznam – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Trojrozměrný seznam – Python – Fórum – Programujte.comTrojrozměrný seznam – Python – Fórum – Programujte.com

 

tirio0
Newbie
13. 6. 2009   #1
-
0
-

Ahoj,
chtěl bych pracovat s trojrozměrným seznamem, ale při pokusu o změnu jednoho prvku seznamu se změní i další. Tak nevím kde dělám chybu (viz kód)



>>> a = 3*[3*[3*[False]]]
>>> a[0][0][0]
False
>>> a[0][0][0] = True
>>> a
[[[True, False, False], [True, False, False], [True, False, False]], [[True, False, False], [True, False, False], [True, False, False]], [[True, False, False], [True, False, False], [True, False, False]]]

Nahlásit jako SPAM
IP: 86.63.218.–
Tirio
moje skripty v Pythonu najdete na http://www.beta.tym.cz/index.php?n=Py.Skripty
Spectator0
Věrný člen
15. 6. 2009   #2
-
0
-

To tirio : zkusil jsem si to tvoje pole a mam pocit, že chyba bude už ve vyytváření,protože když udělá to pole ručně tak to funguje bez chyby.
Obávám se, že to co děláš ty neskončí jako trojrozměrné pole, ale jako nějaký hybrid, kterého ovšem nedokážu popsat. Netusim co je v tom za zradu, ale je to někde v tom násobení



a = [ [ [0,0,0],[0,0,0],[0,0,0] ], [ [0,0,0],[0,0,0],[0,0,0] ], [ [0,0,0],[0,0,0],[0,0,0] ] ]
for i in a:
print i
print "*********************************"
a[1][1][1] = 1
for i in a:
print i

Nahlásit jako SPAM
IP: 82.150.166.–
. . .
koumes21
~ Anonymní uživatel
18 příspěvků
15. 6. 2009   #3
-
0
-

U Pythonu je tohle celkem učebnicový příklad, když zkopírujeme seznam a do seznamu b a změníme prvek seznamu a, změní se i v seznamu b a obráceně. Je to proto, že prvky v seznamech se nepředávají hodnotou ale odkazem.
Stačí tedy, když seznam vytvoříš takto:

a=[[[False]*3 for i in range(3)] for j in range(3)]

Nahlásit jako SPAM
IP: 82.113.48.–
tirio0
Newbie
16. 6. 2009   #4
-
0
-

díky,
už to funguje.

Nahlásit jako SPAM
IP: 147.228.209.–
Tirio
moje skripty v Pythonu najdete na http://www.beta.tym.cz/index.php?n=Py.Skripty
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

OS seznam — založil Bengo

Seznam — založil tom9k

C++ Seznam — založil _Daffy_

Linearni seznam — založil pidgin

Seznam z raw_input — založil Pepa Rohlik

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý