Besynnerligheter

Via diaspora blir man snabbt bekant med nya fräscha nördigheter, nu senast en presentation av ruby och java scripts små nycker och besynnerligheter. I samma anda hittade jag också (via planet Debian) en beskrivning av en av pythons egenheter:

>>> x = ['a', 'b']
>>> x
['a', 'b']
>>> x += 'c'
>>> x
['a', 'b', 'c']
>>> x += ''
>>> x
['a', 'b', 'c']
>>> x += ['']
>>> x
['a', 'b', 'c', '']

Det tog ett tag för mig att förstå hur detta fungerade trots att jag läst förklaringen pga. lite handikapp från C där ” betyder ett tecken medan i python representerar det en sträng. Koden ovan visar att ifall man lägger till en tom sträng (”) till en lista med tecken läggs inget till men om man lägger till en lista med ett tomt tecken ([”]) till en list läggs ett tomt tecken till. Detta innebär att det tomma tecknet är ett giltigt tecken men kan inte läggas in i en lista med den vanliga +-operatorn. däremot kan + operatorn lägga till en lista som redan innehåller den tomma strängen. Det här beror på att python bara kan addera listor, i fallet

x += y

där x är en lista måste y också vara en lista. Men i exemplet ovan adderades strängar till listan, detta går endast eftersom strängar kan ses som en lista av tecken. den tomma strängen (”) anses då vara en lista med 0 element och då adderas ingenting. om vi deklarerar en lista med en tom sträng ([”]) kan vi dock utföra operationen för i detta fallet har vi en lista med 1 element (den tomma strängen).

Etiketter: , ,

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s


%d bloggare gillar detta: