2017-09-07 2 views
0

Je comprends que les tuples sont des objets immuables, cependant, je sais que les tuples supportent l'indexation et le découpage en tranches. Ainsi, si un tuple est affecté à une variable, je peux réaffecter la variable à un nouvel objet tuple et modifier la valeur à la position d'index désirée.Modification d'un tuple unidimensionnel à l'aide de la réattribution de tranchage/objet

Lorsque j'essaie de faire cela en utilisant une tranche d'index, je reçois un tuple contenant plusieurs tuples. Je comprends pourquoi cela se produit, parce que je passe des tranches séparées par des virgules du tuple original, mais je ne peux pas comprendre comment (si possible) je peux retourner un tuple unidimensionnel avec un seul élément changé en travaillant avec de plus grands ensembles de Les données.

Exemple:

someNumbers = tuple(i for i in range(0, 20)) 
print(someNumbers) 
someNumbers = someNumbers[:10], 2000, someNumbers[11:] 
print(someNumbers) 

produit les éléments suivants:

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19) 
((0, 1, 2, 3, 4, 5, 6, 7, 8, 9), 2000, (11, 12, 13, 14, 15, 16, 17, 18, 19)) 

Puis-je retourner un tuple unidimensionnelle et changer seulement la valeur d'index désiré?

Répondre

0

Vous pouvez utiliser la concaténation de tuple:

someNumbers = tuple(i for i in range(0, 20)) 
print(someNumbers) 
# (2000,) to differentiate it from (2000) which is a number 
someNumbers = someNumbers[:10]+ (2000,) + someNumbers[11:] 
print(someNumbers) 

Sorties:

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19) 
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2000, 11, 12, 13, 14, 15, 16, 17, 18, 19)