The method append
modifies the list in place.
It does not return anything (or equivalently, it returns None
).
It has the side-effect of modifying the list.
Doing d = c.append(0)
assigns the result of c.append(0)
(i.e., None
) to d
.
To get a new list consisting of the former value of c
with one extra element 0
, use:
sage: d = c + [0]
Recommended: go through a few of
SageMath's thematic tutorials,
especially those in the section "Introduction to Python".
In a comment after my initial answer, there is a follow up question about
Python equivalents of some Mathematica functions for operating on lists:
RotateLeft,
RotateRight,
PadLeft,
PadRight
(the links point to the Wolfram language reference manual entries for
those functions).
Implementing their equivalent in Sage is a good exercise after going through the tutorial.
One could make two versions, one that rotates or pads inplace, one that returns the result.
Here is one way to rotate right one step, inplace:
sage: a = [0, 3, 9, 5, 6, 8, 4]
sage: a[:0] = [a.pop()]
sage: a
[4, 0, 3, 9, 5, 6, 8]
Here is a rotated_right
function:
def rotated_right(a, n=1):
if len(a) < 2 or n % len(a) == 0:
return a[:]
n = n % len(a)
return a[-n:] + a[:-n]
A pad_right
function and a padded_right
function:
def pad_right(a, n=1)
if len(a) < n:
a.extend([0] * (n - len(a)))
def padded_right(a, n=1)
if len(a) < n:
return a[:] + [0] * (n - len(a))
return a[:]
Further recommendations: