Jak dodać liczbę całkowitą do każdego elementu listy?


Jeśli mam
list = [1,2,3]
i chcę dodać
1
do każdego elementu, aby uzyskać wynik
[2,3,4] , 
jak mam to zrobić?
Zakładam, że będę używał pętli for, ale nie jestem pewien, jak to zrobić.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

new_list = [x+1 for x in my_list]
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

>>> mylist = [1,2,3]
>>> [x+1 for x in mylist]
[2, 3, 4]
>>>

lista zrozumienia języka Python
http://docs.python.org/tutoria ... sions
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Inne odpowiedzi dotyczące rozumienia list prawdopodobnie najlepiej nadają się do prostego dodawania, ale jeśli masz bardziej złożoną funkcję, którą musisz zastosować do wszystkich elementów, to

mapa
http://docs.python.org/library/functions.html#map
może być odpowiednie.
W twoim przykładzie byłoby to:
>>> map(lambda x:x+1, [1,2,3])
[2,3,4]
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

jeśli chcesz użyć numpy, jest następująca inna metoda
import numpy as np
list1 = [1,2,3]
list1 = list(np.asarray(list1) + 1)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Edycja: nie na miejscu
Po pierwsze, nie używaj słowa „lista” dla swojej zmiennej. Cieniuje słowo kluczowe
list
.
Najlepszym sposobem jest zrobienie tego na miejscu za pomocą splicingu, pamiętaj, że
[:]
oznacza splicing:
>>> _list=[1,2,3]
>>> _list[:]=[i+1 for i in _list]
>>> _list
[2, 3, 4]
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

>>> [x.__add__(1) for x in [1, 3, 5]]
3: [2, 4, 6]

Moim zamiarem jest pokazanie, czy pozycja na liście jest liczbą całkowitą, czy obsługuje różne wbudowane funkcje.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Python 2+:
>>> mylist = [1,2,3]
>>> map(lambda x: x + 1, mylist)
[2, 3, 4]

Python 3+:
>>> mylist = [1,2,3]
>>> list(map(lambda x: x + 1, mylist))
[2, 3, 4]
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

import numpy as npnp.add([1, 2, 3], 1).tolist()

co daje
[2, 3, 4]
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Natknąłem się na niezbyt skuteczny, ale unikalny sposób, aby to zrobić. Więc dziel się tym i tak, zajmuje to dodatkowe miejsce na kolejną listę.
from operator import add
test_list1 = [4, 5, 6, 2, 10]
test_list2 = [1] * len(test_list1)res_list = list(map(add, test_list1, test_list2))print(test_list1)
print(test_list2)
print(res_list)#### Output ####
[4, 5, 6, 2, 10]
[1, 1, 1, 1, 1]
[5, 6, 7, 3, 11]
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

list = [1,2,3,4,5]for index in range(len(list)):
list[index] = list[index] +1print(list)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wiele z powyższych odpowiedzi jest bardzo dobrych. Widziałem też dziwne odpowiedzi, które sprawią, że to zadziała. Ponadto ostatnia odpowiedź, jaką widziałem, przeszła przez normalną pętlę. Ta gotowość do udzielania odpowiedzi prowadzi mnie do
itertools
i
numpy
, które wykonają to samo zadanie na różne sposoby.
Tutaj przedstawiam różne sposoby wykonania pracy, na które nie ma odpowiedzi powyżej.
<pre class="lang-py prettyprint-override">
import operator
import itertoolsx = [3, 5, 6, 7]integer = 89"""
Want more vairaint can also use zip_longest from itertools instead just zip
"""
#lazy eval
a = itertools.starmap(operator.add, zip(x, [89] * len(x))) # this is not subscriptable but iterable
print(a)
for i in a:
print(i, end = ",")
# prepared list
a = list(itertools.starmap(operator.add, zip(x, [89] * len(x)))) # this returns list
print(a)# With numpy (before this, install numpy if not present with `pip install numpy`)
import numpyres = numpy.ones(len(x), dtype=int) * integer + x # it returns numpy array
res = numpy.array(x) + integer # you can also use this, infact there are many ways to play around
print(res)
print(res.shape) # prints structure of array, i.e. shape# if you specifically want a list, then use tolistres_list = res.tolist()
print(res_list)


Wyjście

>>> <itertools.starmap object at 0x0000028793490AF0> # output by lazy val
>>> 92,94,95,96, # output of iterating above starmap object
>>> [92, 94, 95, 96] # output obtained by casting to list
>>> __
>>> # |\ | | | |\/| |__| \/
>>> # | \| |__| | | | |
>>> [92 94 95 96] # this is numpy.ndarray object
>>> (4,) # shape of array
>>> [92, 94, 95, 96] # this is a list object (doesn't have a shape)

Mój

jedyny

Powodem, dla którego należy podkreślić użycie
numpy
, jest to, aby zawsze wykonywać operacje na bibliotekach, takie jak numpy, ponieważ jest to wydajne dla bardzo dużych tablic.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się