Ожидаемый результат:
>>> 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))
Кто-нибудь подскажет мне, как это сделать?
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)
-n
вместо -1*n
.
Вы почти делаете это правильно, за исключением того, что умножение списка на отрицательное число не сделает каждый элемент отрицательным, но он станет пустым списком. Вместо этого вы должны написать простую функцию, чтобы сделать каждый элемент отрицательным или умножить на некоторое число, например
def listmul(items, multiplier):
return [item*multiplier for item in items]
print listmul(range(5), -1)
вывод:
[0, -1, -2, -3, -4]
Две проблемы, с которыми вы сталкиваетесь:
1. reverse() отменяет список на месте и ничего не возвращает, поэтому set(ls, ls.reverse())
подобен вызову set(ls, None)
2. set ожидает один список или другой итерируемый, а не несколько скалярных аргументов.