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

[Python] Element d'une liste en String

Chastifol
Chastifol
Niveau 10
29 novembre 2015 à 15:02:25

Bonjour :noel: /

J'ai une liste de 10 entiers : liste=[1,2,3,4,5,6,7,8,9,10]
Et je veux tout mettre en str. Alors je fais :

for item in liste
  item=str(item)

Cependant, quand j'affiche la liste, les elements sont toujours en int. C'est normal ou je dois absolument passer par les indices (liste[0], liste[1] ....) ?

Je travail avec Python 3.4 au cas où.

Merci d'avance.

Pseudo supprimé
Pseudo supprimé 29 novembre 2015 à 15:14:16

Ce que tu modifies c'est une copie de chaque éléments nommée "item" et non le vrai élément de la liste.

Tu peux faire :

for i in range (0, len(liste)):
    liste[i] = str(liste[i])

Pour altérer les éléments de la liste pour de vrai et non une copie.

Ce que tu fais en fait c'est :
Je prends chaque éléments de "liste" un par un et je le stocke dans une variable qui s'appelle "item" puis je modifie "item".

Message édité le 29 novembre 2015 à 15:15:11 par Pseudo supprimé
Chastifol
Chastifol
Niveau 10
29 novembre 2015 à 15:18:32

Le 29 novembre 2015 à 15:14:16 BonbonMagique a écrit :
Ce que tu modifies c'est une copie de chaque éléments nommée "item" et non le vrai élément de la liste.

Tu peux faire :

for i in range (0, len(liste)):
    liste[i] = str(liste[i])

Pour altérer les éléments de la liste pour de vrai et non une copie.

Ce que tu fais en fait c'est :
Je prends chaque éléments de "liste" un par un et je le stocke dans une variable qui s'appelle "item" puis je modifie "item".

C'est effectivement ce que j'ai fini par faire. Ayant testé la première méthode avec un simple print() des éléments, j'ai cru que ça mécherai aussi pour changer directement le contenu.

Merci pour les éclaircissements :ok:

MrGreez94
MrGreez94
Niveau 10
29 novembre 2015 à 15:20:05

Ce n'est pas comme certains langages où l'opération " = " permet de copier le pointeur de l'objet en question (ici un membre de la liste), ce qui permet ensuite de pointer vers le même objet.

En python, cela crée une copie temporaire (qui sera désallouée à l'issue de ta boucle) de ton élément, ça ne modifie pas l'objet original.

Tu es donc obligé de remplacer explicitement chaque élément de la liste par sa copie convertie en string.

MrGreez94
MrGreez94
Niveau 10
29 novembre 2015 à 15:30:58

Le 29 novembre 2015 à 15:14:16 BonbonMagique a écrit :

Tu peux faire :

for i in range (0, len(liste)):
    liste[i] = str(liste[i])

Tu peux simplement écrire

for i in range(len(liste)):
    liste[i] = str(liste[i])

la fonction range(i) crée par défaut une liste allant de 0 à i-1,

range(3) = [0, 1, 2]

le premier argument étant par défaut 0.
Il est intéressant de renseigner cet argument quand il est différent de 0, si par exemple tu veux commencer au deuxième élément et pas au premier.

range(1,3) = [1, 2]
Chastifol
Chastifol
Niveau 10
29 novembre 2015 à 15:37:52

Merci MrGreez94 pour les explications, c'est plus clair maintenant :ok:

Sinon je viens de découvrir qu'on peut faire :

liste2=[str(i) for i in liste]

'liste2' va contenir les éléments de 'liste' mais en str :hap:

MrGreez94
MrGreez94
Niveau 10
29 novembre 2015 à 17:12:24

Le 29 novembre 2015 à 15:37:52 Chastifol a écrit :
Merci MrGreez94 pour les explications, c'est plus clair maintenant :ok:

Sinon je viens de découvrir qu'on peut faire :

liste2=[str(i) for i in liste]

'liste2' va contenir les éléments de 'liste' mais en str :hap:

On appelle ça des compréhensions de listes, c'est pratique quand on est à l'aise avec, sinon ça peut paraître peu lisible :p)

Schiffer
Schiffer
Niveau 10
29 novembre 2015 à 19:41:10
liste=map(str, range(1,11))
Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment