Slice tekur þrjá parametra
Allir sem hafa forritað í Python þekkja hvernig hægt er að klippa lista.
[1,2,3,4][1:] skilar [2,3,4]
[1,2,3,4][:-1]->[1,2,3]
[1,2,3,4][1:-1]->[2,3]
Það sem ég vissi ekki fyrr en rétt í þessu, vegna þess að ég asnaðist til að lesa python skjölunina útaf allt öðru falli, er að slice tekur þriðja parameterinn step. Þannig að:
[1,2,3,4,5,6][::2] skilar [1, 3, 5]
[1,2,3,4,5,6][1::2]->[2, 4, 6]
[1,2,3,4,5,6][1:-1:2]->[2, 4]
Mínus tölur snúa lista:
[1,2,3][::-1] skilar [3, 2, 1]
[1,2,3,4,5,6][::-2]->[6, 4, 2]
Þetta finnst mér gott dæmi um það hvað ég er stundum seinn að fatta. Ég veit ekki hvort ég hefði þurft að nota þetta oft en það er gaman að vita af þessu.
Svo hef ég líka afskaplega gaman að því að skrifa bloggfærslur sem fara fyrir ofan garð og neðan hjá flestum sem slysast hingað inn.
Þórhallur Helgason - 02/04/09 08:37 #
Amen to that! ;)
Erlendur - 03/04/09 01:16 #
Þetta er reyndar fídus sem ég hef notað þónokkuð í Python og Matlab. En það er alltaf gaman að komast að svona smáhlutum.
Eggert - 03/04/09 16:39 #
Numpy er einmitt með fleiri slice tilbrigði, eins og að geta notað ... sem slice, og n-staka index, þar sem hvert stak getur verið slice:
>>> a = numpy.arange(100) >>> a.shape = 2,5,10 >>> a[1,...,::-4] array([[59, 55, 51], [69, 65, 61], [79, 75, 71], [89, 85, 81], [99, 95, 91]])