列表反转,列表乘以-1

1 投票
3 回答
538 浏览
提问于 2025-04-17 01:10

预期的结果:

>>> 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。这个网站通常用来运行代码和分享代码片段。

撰写回答