Python

2D lists (and the [[0]*3]*3 trap)

Në shqip: Listat dydimensionale

ShpjegimiSQ

Një listë listash është një tabelë: m[1][2]. Kurth i famshëm: [[0] * 3] * 3 krijon tre referenca te i njëjti rresht — ndryshon njërin, ndryshojnë të gjithë. Përdor [[0] * 3 for _ in range(3)].

EnglishEN

A list of lists is a table: m[1][2]. A famous trap: [[0] * 3] * 3 creates three references to the same row — change one and they all change. Use [[0] * 3 for _ in range(3)].

Si ta mendosh

Si tri fotokopje të së njëjtës fletë që në të vërtetë janë e njëjta fletë.

Lexoje në anglisht

Like three “copies” of a sheet that are actually the same sheet.

Shembull kodipython

gabim = [[0] * 3] * 3; gabim[0][0] = 1
print(gabim)    # [[1,0,0],[1,0,0],[1,0,0]] (!)
mire = [[0] * 3 for _ in range(3)]

Terma të lidhur