These are chat archives for BernieenJos/weetikveel

6th
Jul 2015
JosvanderSpek
@JosvanderSpek
Jul 06 2015 17:36
Huh wtf
ik wil dus lijst-elementen swappen
Nu weet ik dat dat zo kan
lijste[3],lijste[4] = lijste[4], lijste[3]
Maar hoezo de fuck werkt dit dan niet???
>>> lis = [0,2,4,6,8]
>>> lis
[0, 2, 4, 6, 8]
>>> lis[lis.index(8)-1],lis[lis.index(8)] = lis[lis.index(8)], lis[lis.index(8)- 1]
>>> lis
[0, 2, 4, 6, 8]
>>>
???????????????????????????
iambernie
@iambernie
Jul 06 2015 19:47
Goeie, ik weet niet waarom dat niet werkt. Maar misschien kun je de volgende workaround gebruiken waarbij je de indices in hulpvariabelen bewaart?
>>> lis
[0, 2, 4, 6, 8]
>>> a, b = lis.index(8), lis.index(8)-1
>>> print(a,b)
4 3
>>> lis[b], lis[a] = lis[a], lis[b]
>>> lis
[0, 2, 4, 8, 6]
iambernie
@iambernie
Jul 06 2015 19:55
Je zou evt. de volgende schuiffunctie kunnen gebruiken:
>>> def shiftleft(lijst, elem):
...     a = lijst.index(elem)
...     b = a - 1
...     lijst[b], lijst[a] = lijst[a], lijst[b]
... 
>>> lis = [0,2,4,6,8]
>>> shiftleft(lis, 8)
>>> lis
[0, 2, 4, 8, 6]
>>> shiftleft(lis, 8)
>>> lis
[0, 2, 8, 4, 6]
>>> shiftleft(lis, 6)
>>> lis
[0, 2, 8, 6, 4]
Dit gedraagt zich alleen misschien niet zoals je zou willen op de linkerrand, maar daar zijn ook weer dingen op te bedenken.
>>> lis
[0, 2, 8, 6, 4]
>>> shiftleft(lis, 0)
>>> lis
[4, 2, 8, 6, 0]
Ben je soms een sorteeralgoritme aan het programmeren?