@@ -235,6 +235,20 @@ static mp_obj_t list_remove(mp_obj_t self_in, mp_obj_t value) {
235235 return mp_const_none ;
236236}
237237
238+ static mp_obj_t list_reverse (mp_obj_t self_in ) {
239+ assert (MP_OBJ_IS_TYPE (self_in , & list_type ));
240+ mp_obj_list_t * self = self_in ;
241+
242+ int len = self -> len ;
243+ for (int i = 0 ; i < len /2 ; i ++ ) {
244+ mp_obj_t * a = self -> items [i ];
245+ self -> items [i ] = self -> items [len - i - 1 ];
246+ self -> items [len - i - 1 ] = a ;
247+ }
248+
249+ return mp_const_none ;
250+ }
251+
238252static MP_DEFINE_CONST_FUN_OBJ_2 (list_append_obj , mp_obj_list_append ) ;
239253static MP_DEFINE_CONST_FUN_OBJ_1 (list_clear_obj , list_clear ) ;
240254static MP_DEFINE_CONST_FUN_OBJ_1 (list_copy_obj , list_copy ) ;
@@ -243,6 +257,7 @@ static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(list_index_obj, 2, 4, list_index);
243257static MP_DEFINE_CONST_FUN_OBJ_3 (list_insert_obj , list_insert ) ;
244258static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (list_pop_obj , 1 , 2 , list_pop ) ;
245259static MP_DEFINE_CONST_FUN_OBJ_2 (list_remove_obj , list_remove ) ;
260+ static MP_DEFINE_CONST_FUN_OBJ_1 (list_reverse_obj , list_reverse ) ;
246261static MP_DEFINE_CONST_FUN_OBJ_2 (list_sort_obj , list_sort ) ;
247262
248263const mp_obj_type_t list_type = {
@@ -262,6 +277,7 @@ const mp_obj_type_t list_type = {
262277 { "insert" , & list_insert_obj },
263278 { "pop" , & list_pop_obj },
264279 { "remove" , & list_remove_obj },
280+ { "reverse" , & list_reverse_obj },
265281 { "sort" , & list_sort_obj },
266282 { NULL , NULL }, // end-of-list sentinel
267283 },
0 commit comments