1

感觉自己像个彻头彻尾的白痴,因为我知道我知道该怎么做……

我有一堆数字的列表:

nums = [100,200,300,400,500]

我想将所有这些数字加 1,然后将其复制到新列表中,同时保留旧列表。所以我最终会得到

nums = [100,200,300,400,500]
moreNums = [101,201,301,401,501]
evenMoreNums = [102,202,302,402,502]

有没有一种简单的方法可以做到这一点,或者最简单的方法仍然是

for i in range (nums):
    moreNums.append(i + 1)

? (我不知道这是否会起作用,但我知道如果不起作用,我知道如何解决它......)

4

3 回答 3

5
In [65]: nums = [100,200,300,400,500]

In [66]: nums1 = [x + 1 for x in nums]

In [67]: nums1
Out[67]: [101, 201, 301, 401, 501]
于 2013-03-05T04:25:50.730 回答
4

列表推导(或相同的Python 文档):

nums = [100,200,300,400,500]
nums = [e+1 for e in nums]
# etc

例子:

>>> nums=range(100,600,100)
>>> nums
[100, 200, 300, 400, 500]
>>> nums=[e+1 for e in nums]
>>> nums
[101, 201, 301, 401, 501]
>>> nums=[e+1 for e in nums]
>>> nums
[102, 202, 302, 402, 502]

或者,如果您想准确使用您的姓名:

>>> nums=range(100,600,100)
>>> moreNums=[e+1 for e in nums]
>>> evenMoreNums=[e+1 for e in moreNums]
>>> print nums,moreNums,evenMoreNums
[100, 200, 300, 400, 500] [101, 201, 301, 401, 501] [102, 202, 302, 402, 502]
于 2013-03-05T04:26:26.437 回答
1

如果你寻求另一种方式:

nums = [100,200,300,400,500]
map(lambda x: x+1, nums)

当您想将简单功能应用于列表的所有项目时,请查看地图

于 2013-03-05T04:29:41.863 回答