2017-09-22 1 views
-3

Je dois trouver un moyen de prendre un jeu de données et de changer quelques valeurs.Problème avec les tuples et les listes en Python

Les données sont dans ce format: (nom, âge, richesse)

list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)] 

je dois utiliser une boucle for et les indices des deux tuple et la liste pour changer la richesse de chaque personne exactement 1000.

+0

Tuples sont immuables, une fois construit, vous ne peut pas changer les * éléments *. Qu'avez-vous essayé vous-même? –

+1

Et où êtes-vous resté coincé quand vous avez essayé de faire cela? S'il vous plaît partagez vos tentatives afin que nous puissions aider à corriger * ceux *. –

+0

J'apprécie l'aide. Et il m'est difficile de dire où je me suis retrouvé bloqué parce que je n'ai pas eu de cours de programmation. Je prends un cours, mais je ne peux pas y assister puisque les cours se chevauchent tous avec d'autres cours de mon emploi du temps et que le professeur a une politique «sans questions». C'est littéralement la première fois que j'ai vu Python et je suis juste à la recherche d'Internet pour essayer de résoudre ces problèmes. –

Répondre

1

vous pouvez le faire de cette façon:

list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)] 

for i in range(len(list)): 
    list[i] = (list[i][0],list[i][1],1000) 

Depuis tuple est immuable vous devez c reate un nouveau tuple.

Vous pouvez aussi créer un nouveau list cette façon:

list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)] 
list2 = [] 
for t in list: 
    list2.append(t[0],t[1],1000) 

Ceci est un for-each comme moyen de parcourir votre liste.

Une autre 2 façons compact et facile, comme @Martijn Pieters ♦ suggère est d'utiliser list comprehensions comme ceci:

list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)] 
list = [(x,y,1000) for (x,y,z) in list] 

ou enumerate() comme ceci:

list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)] 
for i, (name, age, wealth) in enumerate(list): 
    list[i] = (name,age,1000) 
+2

Vous devrait vraiment apprendre à propos de 'énumérer()', ou énumérer les compréhensions. –

+0

Je sais 'énumérer()' mais je ne l'ai pas beaucoup utilisé dans mon expérience, comment peut-il être utile ici? (ne pas critiquer, juste demander d'apprendre) – magicleon

+1

Si vous avez utilisé 'pour i, (nom, âge, richesse) dans enumerate (lst):', vous n'avez pas besoin d'utiliser 'range()' ou d'indexation. –