Browse Source

list: Implement list multiplication.

pull/134/head
Paul Sokolovsky 11 years ago
parent
commit
074d3b5f86
  1. 15
      py/objlist.c
  2. 4
      tests/basics/tests/list_mult.py

15
py/objlist.c

@ -81,6 +81,21 @@ static mp_obj_t list_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) {
memcpy(s->items + o->len, p->items, sizeof(mp_obj_t) * p->len);
return s;
}
case RT_BINARY_OP_MULTIPLY:
{
if (!MP_OBJ_IS_SMALL_INT(rhs)) {
return NULL;
}
int n = MP_OBJ_SMALL_INT_VALUE(rhs);
int len = o->len;
mp_obj_list_t *s = list_new(len * n);
mp_obj_t *dest = s->items;
for (int i = 0; i < n; i++) {
memcpy(dest, o->items, sizeof(mp_obj_t) * len);
dest += len;
}
return s;
}
default:
// op not supported
return NULL;

4
tests/basics/tests/list_mult.py

@ -0,0 +1,4 @@
print([0] * 5)
a = [1, 2, 3]
c = a * 3
print(c)
Loading…
Cancel
Save