2013-03-05 3 views
1

Feeling как полнейшая идиотка, потому что я знаю, я знаю, как это сделать ...Добавления целого числа к каждому значению в списке целых чисел

У меня есть список кучи цифр:

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

List comprehensions (или Python docs для же):

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] 
44 +44516410617451515053691368888
+0

Awesome - я на самом деле не знал ни одного из этих способов, поэтому теперь у меня есть две новые вещи. Спасибо за вашу помощь! – user2113818

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] 
+0

Awesome- Я на самом деле не знал, либо из этих способов, так что теперь у меня есть две новые вещи. Спасибо за вашу помощь! – user2113818

1

Если искать другой путь:

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

взглянуть на map, когда вы хотите применить простые функции для всех элементов из списка

Смежные вопросы