2017-02-11 11 views
-1

Я хочу изменить список, но это не обычный список. Он имеет элементы списка. Например:Как изменить список в списке?

[[0, 1, 2], [1, 2, 3]] 

Я сделал программу, и вы можете ее увидеть, но это не дает мне правильного вывода.

def deep_reverse(L): 
    if len(L) > 1: 
     x=len(L) 
     i=0 
     for i in range(x): 
      L[i].reverse() 
    else: 
     L.reverse() 
    return L 

и после выполнения он дает этот результат:

[[2, 1, 0], [3, 2, 1]] 

Однако этот вывод является неправильным, правильным является:

[[3, 2, 1], [2, 1, 0]] 

Пожалуйста, я просто не хватает очень обычную вещь, но, как Я программист по шуму, поэтому у меня недостаточно знаний. Большое вам спасибо за вашу помощь.

ПРОВЕРЬТЕ СВОЙ КОД С минусом ЧИСЛАМИ

+1

ЧТО ТАКОЕ "-VE NUMBERS" –

ответ

0

Вы должны реверсированиями списка, содержащий списки во всех случаях, не только если условие len(L) > 1 является False, просто сделать краткое изменение в:

def deep_reverse(L): 
    if len(L) > 1: 
     x=len(L) 
     i=0 
     for i in range(x): 
      L[i].reverse() 
    L.reverse() 

Поскольку эта функция изменяет список и суб-листы на месте, вам не нужно return заявления (L.reverse() возвращает None).

0

Более элегантное решение, используя список понимание, где l ваш первоначальный список:

In [5]: list(reversed([list(reversed(x)) for x in l])) 
Out[5]: [[3, 2, 1], [2, 1, 0]] 
3

Использование списка понимание:

l = [[0, 1, 2], [1, 2, 3]] 

c = [x[::-1] for x in l[::-1]] # [[3, 2, 1], [2, 1, 0]] 

Я не уверен, что вы пытались, но:

l = [[1, 2], [3, -4], [-5, 6, 7]] 
c = [x[::-1] for x in l[::-1]] # [[7, 6, -5], [-4, 3], [2, 1]] 
+0

Да, это хорошо. короткий и лаконичный. +1 – RomanPerekhrest

+0

Уважаемый сэр, ваша программа неверна! просто проверьте данный список [[1, 2], [3, -4], [-5, 6, 7]] для этого входного выхода должно быть [[7, 6, -5], [ 3, -4], [2, 1]] , но он дает этот выход [[7, 6, -5], [-4, 3], [2, 1]] –

+2

Почему второй элемент не обратный ?! – Arman

1

Использование подсчета и индексации списка:

old_list = [[0, 1, 2], [1, 2, 3]] 
# reversed(old_list) = [[1,2,3],[0,1,2]] 
new_list = [item[::-1] for item in reversed(old_list)] 
new_list 
# [[3, 2, 1], [2, 1, 0]] 

 Смежные вопросы

  • Нет связанных вопросов^_^