CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

question python

Pseudo supprimé
Pseudo supprimé 13 décembre 2018 à 19:56:29

Bonsoir a vous!

Je ne comprends pas pourquoi celà fait sa
voilà une liste de commande que je vais executer:
noms1 = ["Alice", "Bob", "Charles", "Damien"]
noms2 = noms1
noms2[0] = "Arthur"

Donc là je me suis dit que noms1= devrait être égale à ["Alice", "Bob", "Charles", "Damien"] .(apres avoir exécuter le code)
Sur python après execution de ce programme j'ai noms1= ["Arthur", "Bob", "Charles", "Damien"]
Wtf?
Alors je me suis dit que l'affectation avec les liste devait interconnecté les listes.

Mais quand je fait sa
noms3 = ["Alice", "Bob", "Charles", "Damien"]
noms4 = noms3
noms4 = ["Arthur"]

et bien là ce n'est plus le cas
noms3= ["Alice", "Bob", "Charles", "Damien"]
et noms4 = ["Arthur"]

c'est normal?

Message édité le 13 décembre 2018 à 19:58:01 par Pseudo supprimé
fanof_banni
fanof_banni
Niveau 12
13 décembre 2018 à 21:07:13

Je suppose qu'en python les listes sont des objets.

Dans la majorité des langages orienté objets (tous les langages ?), écrire "variable = objet" va juste enregistrer l'adresse de l'objet dans la variable (créer un lien en quelque sorte).
De fait, si par la suite tu fais des modifications sur "variable", tu modifies en fait "objet".

Pour copier un objet tu dois passer par une méthode, du genre "variable = clone objet"

[Black_Spirit]
[Black_Spirit]
Niveau 19
14 décembre 2018 à 09:50:40

Y a 2 cas distincts dans ton exemple, je vais essayer d'expliquer.

Cas 1:
l = [1, 2, 3]
n = l

Dans ce cas, n contient l'adresse de l donc changer n revient à changer l et réciproquement.

Cas 2:
l = [1, 2, 3]
n = l
n = [1]

Dans ce cas, à la troisième ligne, tu crées une nouvelle liste et elle est assignée à n. C'est pas la même que celle dans laquelle du coup.
C'est comme si tu faisais un "new ArrayLisy<>()" dans un langage comme le Java en gros

Pseudo supprimé
Pseudo supprimé 14 décembre 2018 à 10:45:32

Ok merci pour ces explication :)

Batora
Batora
Niveau 10
14 décembre 2018 à 14:17:01

Dans ton cas tu peux faire liste2 = liste1.copy() pour avoir deux listes séparées et pas juste deux références a une seule liste iirc.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment