web-dev-qa-db-fra.com

Comment "mettre à jour" ou "écraser" une liste python

aList = [123, 'xyz', 'zara', 'abc']
aList.append(2014)
print aList

qui produit o/p [123, 'xyz', 'zara', 'abc', 2014]

Que faut-il faire pour écraser/mettre à jour cette liste ... Je veux que le o/p soit 

[2014, 'xyz', 'zara', 'abc']

4
pyLearner

Vous pouvez essayer ceci 

alist[0] = 2014

mais si vous n'êtes pas sûr de la position de 123, vous pouvez essayer comme ceci:

for idx, item in enumerate(alist):
   if 123 in item:
       alist[idx] = 2014
14
Rahul Tripathi

Qu'en est-il de remplacer l'élément si vous connaissez la position:

aList[0]=2014

Ou si vous ne connaissez pas la boucle de position dans la liste, trouvez l'élément et remplacez-le.

aList = [123, 'xyz', 'zara', 'abc']
for i,item in enumerate(aList):
  if item==123:
    aList[i]=2014

print aList
3
Kerby82

Je le préférerais sans énumérer et utiliser plutôt "range" comme ceci:

for item in range(0, len(alist)):
   if 123 in item:
      alist[item] = 2014

Pour ceux qui débutent dans Python, il pourrait être plus lisible et un peu plus intelligent à récapituler. 

Cordialement P. 

1
innovacode

J'apprends à coder et j'ai trouvé le même problème. Je pense que le moyen le plus simple de résoudre ce problème consiste à écraser littéralement la liste, comme le dit @ kerby82:

Un élément d'une liste en Python peut être défini sur une valeur à l'aide du formulaire

x [n] = v

x est le nom de la liste, n est l'index du tableau etv est la valeur que vous souhaitez définir.

Dans votre exemple:

aList = [123, 'xyz', 'zara', 'abc']
aList[0] = 2014
print aList
>>[2014, 'xyz', 'zara', 'abc']
0
Gabriel_Ferreira

Je pense que c'est plus Pythonic:

aList.remove(123)
aList.insert(0, 2014)

plus utile:

def shuffle(list, to_delete, to_shuffle, index):
    list.remove(to_delete)
    list.insert(index, to_shuffle)
    return

list = ['a', 'b']
shuffle(list, 'a', 'c', 0)
print list
>> ['c', 'b']
0
Dreamworm

Si vous essayez de prendre une valeur du même tableau et essayez de la mettre à jour, vous pouvez utiliser le code suivant. 

{  'condition': { 
                     'ts': [   '5a81625ba0ff65023c729022',
                               '5a8161ada0ff65023c728f51',
                               '5a815fb4a0ff65023c728dcd']}

Si la collection est userData ['condition'] ['ts'] et que nous devons 

    for i,supplier in enumerate(userData['condition']['ts']): 
        supplier = ObjectId(supplier)
        userData['condition']['ts'][i] = supplier

La sortie sera 

{'condition': {   'ts': [   ObjectId('5a81625ba0ff65023c729022'),
                            ObjectId('5a8161ada0ff65023c728f51'),
                            ObjectId('5a815fb4a0ff65023c728dcd')]}
0
Haris Np