Je travaille sur un script où j'ai une liste de tuples comme ('1','2','3','4')
. par exemple.:
list = [('1','2','3','4'),
('2','3','4','5'),
('3','4','5','6'),
('4','5','6','7')]
Maintenant, je dois ajouter '1234'
, '2345'
, '3456'
et '4567'
respectivement à la fin de chaque tuple. par exemple:
list = [('1','2','3','4','1234'),
('2','3','4','5','2345'),
('3','4','5','6','3456'),
('4','5','6','7','4567')]
Est-ce possible d'une quelconque manière?
Les tuples sont immuables et ne sont pas supposés être modifiés - c’est le type de liste. Vous pouvez remplacer chaque Tuple par originalTuple + (newElement,)
, créant ainsi un nouveau Tuple. Par exemple:
t = (1,2,3)
t = t + (1,)
print t
(1,2,3,1)
Mais je suggèrerais plutôt de commencer par les listes, car elles sont plus rapides pour insérer des éléments.
Et une autre astuce: N'écrasez pas le nom intégré list
dans votre programme, appelez plutôt la variable l
ou un autre nom. Si vous écrasez le nom intégré, vous ne pourrez plus l'utiliser dans la portée actuelle.
Sur la base de la syntaxe, je suppose que c'est Python. L'intérêt d'un tuple est qu'il est immuable, vous devez donc remplacer chaque élément par un nouveau tuple:
list = [l + (''.join(l),) for l in list]
# output:
[('1', '2', '3', '4', '1234'),
('2', '3', '4', '5', '2345'),
('3', '4', '5', '6', '3456'),
('4', '5', '6', '7', '4567')]
En Python, vous ne pouvez pas. Les tuples sont immuables.
Sur la liste contenue, vous pouvez remplacer Tuple ('1', '2', '3', '4')
Par un autre ('1', '2', '3', '4', '1234')
Tuple.
Comme d'autres personnes ont répondu, les n-uplets dans python sont immuables et le seul moyen de "modifier" celui-ci est de créer un nouveau avec les éléments ajoutés.
Mais la meilleure solution est une liste. Lorsque la fonction ou la méthode nécessitant un tuple doit être appelée, créez un tuple à l'aide de Tuple (liste).
Comme mentionné dans d'autres réponses, les n-uplets sont immuables une fois créés, et une liste pourrait mieux servir vos objectifs.
Cela dit, une autre option pour créer un nouveau tuple avec des éléments supplémentaires consiste à utiliser l'opérateur splat:
new_Tuple = (*old_Tuple, 'new', 'items')
J'aime cette syntaxe car ressemble à un nouveau tuple, elle communique donc clairement ce que vous essayez de faire.
En utilisant splat, une solution potentielle est:
list = [(*i, ''.join(i)) for i in list]
Je passais en revue certains détails liés à Tuple
et list
, et ce que j'ai compris est le suivant:
Heterogeneous
type de données de collectionDonc, pour ajouter un nouvel élément à un tuple, vous devez le convertir en list
et faire append()
sur puis remettez-le à Tuple.
Mais personnellement, ce que j’ai ressenti à propos de la question est que si les tuples sont supposés être finis , éléments de longueur fixe et si nous utilisons ces types de données dans notre logique d'application, il ne devrait pas est un scénario permettant d’ajouter de nouveaux éléments OR mettant à jour une valeur d’élément. Ainsi, au lieu de , une liste de tuples il devrait être la liste de la liste elle-même, est-ce que j'ai raison sur ce point?
list_of_tuples = [('1', '2', '3', '4'),
('2', '3', '4', '5'),
('3', '4', '5', '6'),
('4', '5', '6', '7')]
def mod_tuples(list_of_tuples):
for i in range(0, len(list_of_tuples)):
addition = ''
for x in list_of_tuples[i]:
addition = addition + x
list_of_tuples[i] = list_of_tuples[i] + (addition,)
return list_of_tuples
# check:
print mod_tuples(list_of_tuples)
OUTPUTS = []
for number in range(len(list_of_tuples))):
tup_ = list_of_tuples[number]
list_ = list(tup_)
item_ = list_[0] + list_[1] + list_[2] + list_[3]
list_.append(item_)
OUTPUTS.append(Tuple(list_))
SORTIES est ce que vous désirez