Natürlich, Liste der Indizierung kann teuer werden (kostet O(Größe der Liste)), so dass, wenn Sie tun dies mit einer Regelmäßigkeit, die Sie lieber wollen, um ein array zu verwenden:
Ich würde vermeiden, dass die Indizierung in der Liste zweimal durch die Verwendung nthcdr um die cdr von der cons-Zelle, die das erste element, das Sie austauschen möchten, und verwenden Sie dann elt auf, um die restlichen element aus der Unterliste. Dies bedeutet, dass Sie nur wirklich index ausgehend vom Kopf der Liste wieder.
Können Sie
rotatef
:Natürlich, Liste der Indizierung kann teuer werden (kostet O(Größe der Liste)), so dass, wenn Sie tun dies mit einer Regelmäßigkeit, die Sie lieber wollen, um ein array zu verwenden:
Ich würde vermeiden, dass die Indizierung in der Liste zweimal durch die Verwendung
nthcdr
um die cdr von der cons-Zelle, die das erste element, das Sie austauschen möchten, und verwenden Sie dannelt
auf, um die restlichen element aus der Unterliste. Dies bedeutet, dass Sie nur wirklich index ausgehend vom Kopf der Liste wieder.Zumindest aus meiner Sicht ist dies ausreichend mühsam zu rechtfertigen, eine Funktion.