Gå til innhold

Definere størrelse på liste. [løst]


Anbefalte innlegg

Videoannonse
Annonse
Det kan gjøres på følgende måte.

 

lst = [[0]*33]*33

Det er ikke sikkert du får det du vil ha her!

 

Husk på dette med referanse...

 

l = [[0]*5]*5
print l
l[4][4] = 'siste element'
print l

 

[[0, 0, 0, 0, 'siste element'], [0, 0, 0, 0, 'siste element'], [0, 0, 0, 0, 'sis

te element'], [0, 0, 0, 0, 'siste element'], [0, 0, 0, 0, 'siste element']]

 

 

Mulig dette er det du ser etter?

N = 5
fixedList = [[None] * N for x in range(N)]

fixedList[4][4] = 'Siste Element'

print fixedList

[[None, None, None, None, None], [None, None, None, None, None], [None, None, No

ne, None, None], [None, None, None, None, None], [None, None, None, None, 'Siste

Element']]

 

 

Tror det finnes en mer elegant måte å konstruere lista på, men...

Endret av zeitgeist
Lenke til kommentar

Ja, det er fort gjort å bli bitt av den der.

 

IPython 0.6.12 -- An enhanced Interactive Python.

In [1]: a = [1,2,3]

In [2]: b = a

In [3]: b.append(4)

In [4]: a

In [5]: Out[4]: [1, 2, 3, 4]

 

dette glemmer jeg rett som det er, men i Python er alt referanser, ikke kopier.

 

Forresten - hvis det er tall du jobber med, så har du Array-modulen.

Lenke til kommentar

Jeg kikket litt rundt etter dette. Det viser seg at

 

col = 5
row = 5
MultiDimList = [[None] * col for x in range(row)]

er et greit idiom, men at

 

dette er mer leselig:

 

c = 5
r = 5
MultiDimList = [[None for col in range(c)] for row in range(r)]

fordi det er samme type konstruksjon

 

Men - det øverste idiomet er omtrent dobbelt så raskt, så skal du jobbe med noen tusen tabeller så er det kanskje greit å ofre leseligheten ;-)

 

Kilde: Python Cookbook 2.ed 4.5, s 155

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...