B1 · Episode 8 · 5:03

Swapping Variables in Python

This episode explains how variable assignment and swapping work in Python, covering the temporary variable approach and simultaneous assignment (a, b = b, a), and highlights why understanding the underlying step-by-step process is essential—even when syntax hides it.

Source:jmbarbier / peertube.solidev.net · License:CC BY-SA 4.0

Transcript

  1. A égale B, ça veut dire qu'on prend la valeur de B et on la met dans A.

    A equals B means we take the value of B and assign it to A.

  2. Donc la valeur de B, c'était 2.

    So B’s original value was 2.

  3. Et on met cette valeur dans a.

    Then we assign this value to a.

  4. Donc qu'est- ce qu'on a maintenant?

    So what do we have now?

  5. On a a qui vaut deux.

    We now have a equals 2.

  6. Et on a b qui vaut 2.

    And b also equals 2.

  7. J'ai écrasé la valeur 5.

    I overwrote the original value 5.

  8. Ce qui fait que quand à la ligne d'après je vais faire b égal a,

    So when, on the next line, I execute ‘b equals a’,

  9. le b égal a ici, le a c'est plus la valeur que j'avais au début qui est dedans.

    the ‘a’ here is no longer the value originally stored in it.

  10. Mais c'est la valeur que je venais de changer.

    Instead, it’s the new value I just set.

  11. Donc là ici, je vais faire, je prends la valeur 2 qui est la valeur de a et je la

    So here, I’ll take the current value of a — which is 2 —

  12. remets dans b.

    and reassign it to b.

  13. J'écrase 2 par 2.

    Thus, I overwrite 2 with 2.

  14. Donc là ici, c'est toujours a= 2 et b=

    So right now, a is still 2, and b is

  15. 2. Donc la question c'est comment est- ce qu'on fait pour aller inverser la valeur

    2. So the question is: how do we swap the values of a and b?

  16. de a et de b? La bonne solution, l'idée c'est que là qu'est- ce qui s'est passé,

    The correct approach lies in what just happened:

  17. on a écrasé quelque part

    we overwrote a value somewhere —

  18. la valeur. qui était dans a.

    specifically, the one that was originally in a.

  19. Et donc avant d'aller modifier a,

    So before modifying a,

  20. il faut peut- être aller sauvegarder en quelque sorte la valeur qui était dans

    we need to first save the original value of a

  21. quelque part pour pouvoir la garder en mémoire pour pas l'écraser.

    somewhere, so we can remember it and avoid overwriting it.

  22. Donc la bonne solution, si je fais a égale 5.

    So the correct approach is: first set a equal to 5.

  23. A égale 5, B égale 2.

    a equals 5, and b equals 2.

  24. Et pour l'inverser.

    Now we want to swap their values.

  25. Eh bien, je vais être obligé de, on

    Well, we’ll need to introduce a variable —

  26. va dire c, garder en mémoire celui qui a été écrasé.

    let’s call it c — to store the value that got overwritten.

  27. Tout à l'heure, on a écrasé le a, d'accord?

    Just now, we overwrote a, right?

  28. Je vais le garder.

    I’ll keep it.

  29. Là ici, la valeur de a va se mettre dans c.

    Here, the value of a will be stored in c.

  30. Donc là, si j'écris, je vais avoir a égale 5, b

    So now, if I write it out, I’ll have: a equals 5, b

  31. égale 2, et c qui après ça vaut la valeur de a, 5.

    equals 2, and then c equals the value of a—5.

  32. Là maintenant, je peux faire a égale b.

    Now, I can assign b to a.

  33. Là, dans ce cas- là, on aura a

    In this case, a

  34. égale deux. B égal 2 et C égal 5.

    equals 2; b equals 2; and c equals 5.

  35. Donc là j'ai bien écrasé la valeur de A mais je l'ai encore quelque part,

    So yes, I’ve overwritten a’s value, but it’s still saved somewhere—

  36. elle n'est pas perdue, je l'ai encore dans la valeur C.

    it’s not lost—I still have it in variable c.

  37. Donc c'est à ce moment- là que je vais pouvoir écrire B égal non plus A mais B égal

    That’s when I can write: b no longer equals a, but rather equals

  38. C. Là, dans ce cas- là, a égale 5, b égale 2, et puis c égale 5.

    c. In this case, a is 5, b is 2, and c is 5.

  39. Merci c, il nous a bien servi.

    Thanks, c—you’ve been very helpful!

  40. C'est lui qui a permis d'inverser les valeurs de a et de b.

    It’s precisely c that lets us swap the values of a and b.

  41. Voilà, donc attention, les choses se font les unes à la suite des autres.

    There you go—remember: these operations happen one after another.

  42. Là ici quand j'ai a égal b et b égal a, je fais d'abord ça, donc j'écrase,

    For example, here—when I write ‘a equals b’ and ‘b equals a’, I do the first one first, so I overwrite first—

  43. puis ça. Alors il y a une manière de faire en Python.

    then the second one. In Python, there’s actually a way

  44. qui permet de faire les

    to perform

  45. assignations en simultané.

    assignments simultaneously.

  46. Donc c'est Plus court à écrire, c'est plus joli.

    It’s shorter to write and looks cleaner.

  47. Les assignations.

    That is, simultaneous assignment.

  48. En simultané. A virgule B est égal à B virgule A.

    a, b equals b, a.

  49. Alors qu'est- ce que ça fait?

    So what does this actually do?

  50. Ça promet en même temps, il va se débrouiller le Python pour mettre la valeur de B

    It performs both assignments at once—Python automatically puts b’s value

  51. dans A, la valeur de A dans B.

    into a, and a’s value into b.

  52. Entre guillemets en même temps.

    At the same time, put it in quotation marks.

  53. Il se débrouille et il va permet, il va faire ça,

    He handles it himself and will make this happen,

  54. il prend en fait la valeur qui est là

    in fact, he takes the value that’s here,

  55. et il la met là- dedans.

    and puts it into that place.

  56. D'accord, donc c'est plus rapide.

    Okay, so this is faster.

  57. C'est plus joli.

    It’s also neater and more elegant.

  58. Mais il faut bien comprendre que d'abord ça n'existe pas dans tous les langages ça,

    But we must understand: first, this doesn’t exist in all programming languages;

  59. et puis qu'en fait derrière à la fin, un moment, même si c'est caché de nous,

    second, behind the scenes—even though it’s hidden from us—

  60. un moment il s'est passé quelque chose comme ça,

    eventually, something like this does happen:

  61. la valeur précédente a été sauvegardée avant d'être écrasée.

    the previous value gets saved before being overwritten.

  62. L'avantage de ça, c'est qu'on peut le faire si on a par exemple a b c d,

    The advantage is that if, for example, we have variables a, b, c, d,

  63. que je vous demande de passer b dans a, c dans d, etc, de faire plein de choses,

    and you ask me to assign b to a, c to d, etc.—many such assignments—

  64. on peut le faire a b c d égal b c d a et

    we can simply write ‘a, b, c, d = b, c, d, a’,

  65. faire par exemple une permutation circulaire des choses comme ça,

    thereby performing a circular permutation like this,

  66. donc en simultané.

    all in one simultaneous step.

  67. Voilà pour finalement

    So, in summary,

  68. quelque chose qui va être super utile.

    this is something extremely useful.

  69. On donne de la mémoire à notre Python.

    We allocate memory space for our Python.

  70. Là, ici, on fait les choses en live, en direct.

    Right now, we’re operating live—directly and in real time.

  71. Là, maintenant, on va pouvoir enregistrer, mettre une mémoire à quelque chose.

    Now, we’ll be able to store data—to give something memory.

  72. Et ben juste avoir de la mémoire, c'est pas pour autant être très intelligent.

    Yet having memory alone doesn’t make something very intelligent.

  73. Avec la mémoire, on peut juste apprendre et recracher.

    With memory, we can only learn and then repeat.

  74. Donc si on veut donner un tout petit peu d'intelligence à notre Python,

    So, if we want to give our Python a little bit of ‘intelligence’—

  75. intelligence entre guillemets, il va falloir lui apprendre à

    with ‘intelligence’ in quotes—

  76. réagir suivant, voilà, si c'est comme ça, faire ça.

    we’ll need to teach it to react depending on the situation—if this happens, then do that.

  77. Là, on va juste la mémoire, on est quelque chose qui est toujours la même chose.

    Here, we're just using memory, which is always the same thing.

  78. Si maintenant on va être capable de

    If we can now make

  79. faire des choses différentes à notre Python suivant le contenu d'une variable,

    Python perform different actions based on the content of a variable,

  80. suivant quelque chose, on va lui donner beaucoup plus de possibilités.

    that is, depending on certain conditions, we'll give it far more capabilities.

  81. C'est notre phase d'après qu'on va voir, ça sera les structures conditionnelles.

    Next, we'll learn conditional structures.

  82. Si, sinon, alors, etc.

    For example, 'if', 'else', 'then', and so on.

  83. Ça c'est juste pour après.

    We'll cover these later.