обратный список, список кратный -1

1

Ожидаемый результат:

>>> createLists(5)
([1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [ -5, -4, -3, -2, -1], [-1, -2, -3, -4, -5])

Мой код:

  # Write a function that returns 4 lists given a postive number.
    def createLists(num): 
        ls =    [item for item in range(num)]
        return set(ls, ls.reverse(), ls.reverse()*(-1), ls*(-1))

Кто-нибудь подскажет мне, как это сделать?

  • 0
    Хорошо, что вы предоставили код, но вы также должны предоставить любые неправильные результаты или ошибки, которые вы получаете.
  • 0
    Вы должны умножить каждый элемент списка вместо всего списка
Теги:

3 ответа

6
Лучший ответ
def createLists(num): 
    ls = range(1, num+1)
    return (ls, ls[::-1], [-n for n in ls][::-1], [-n for n in ls])

print createLists(5)

http://ideone.com/B0ixx

  • 1
    Или просто -n вместо -1*n .
  • 0
    хороший улов (отредактированный) :) ..
Показать ещё 5 комментариев
0

Вы почти делаете это правильно, за исключением того, что умножение списка на отрицательное число не сделает каждый элемент отрицательным, но он станет пустым списком. Вместо этого вы должны написать простую функцию, чтобы сделать каждый элемент отрицательным или умножить на некоторое число, например

def listmul(items, multiplier):
    return [item*multiplier for item in items]

print listmul(range(5), -1)

вывод:

[0, -1, -2, -3, -4]
0

Две проблемы, с которыми вы сталкиваетесь:
1. reverse() отменяет список на месте и ничего не возвращает, поэтому set(ls, ls.reverse()) подобен вызову set(ls, None)
2. set ожидает один список или другой итерируемый, а не несколько скалярных аргументов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню