Si j'ai list=[1,2,3]
et que je veux ajouter 1
à chaque élément pour obtenir le résultat [2,3,4]
,
Je suppose que j'utiliserais une boucle for mais je ne sais pas exactement comment.
new_list = [x+1 for x in my_list]
>>> mylist = [1,2,3]
>>> [x+1 for x in mylist]
[2, 3, 4]
>>>
Les autres réponses sur la compréhension de liste sont probablement le meilleur choix pour une addition simple, mais si vous avez une fonction plus complexe que vous devez appliquer à tous les éléments, alors map peut être un bon ajustement.
Dans votre exemple, ce serait:
>>> map(lambda x:x+1, [1,2,3])
[2,3,4]
si vous voulez utiliser numpy il existe une autre méthode comme suit
import numpy as np
list1 = [1,2,3]
list1 = list(np.asarray(list1) + 1)
>>> [x.__add__(1) for x in [1, 3, 5]]
3: [2, 4, 6]
Mon intention ici est d'exposer si l'élément de la liste est un entier, il prend en charge diverses fonctions intégrées.
Premièrement, n'utilisez pas la liste de mots pour votre variable. Il ombrage le mot clé list
.
La meilleure façon de le faire est d'utiliser l'épissage, notez que [:]
dénote une épissure:
>>> _list=[1,2,3]
>>> _list[:]=[i+1 for i in _list]
>>> _list
[2, 3, 4]
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]
Nous sommes tombés sur une façon pas si efficace mais unique de le faire. Alors, partagez-le. Et oui, il faut de l'espace supplémentaire pour une autre liste.
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]
list = [1,2,3,4,5]
for index in range(5):
list[index] = list[index] +1
print(list)