列表反转,列表乘以-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))
有没有人能告诉我该怎么做?
3 个回答
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`这个函数需要一个列表或者其他可迭代的东西,而不是多个单独的值。
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。这个网站通常用来运行代码和分享代码片段。