Estoy trabajando en un guión donde tengo una lista de tuplas como ('1','2','3','4')
. p.ej:
list = [('1','2','3','4'),
('2','3','4','5'),
('3','4','5','6'),
('4','5','6','7')]
Ahora tengo que añadir '1234'
, '2345'
, '3456'
y '4567'
respectivamente, al final de cada tupla. p.ej:
list = [('1','2','3','4','1234'),
('2','3','4','5','2345'),
('3','4','5','6','3456'),
('4','5','6','7','4567')]
¿Es posible de alguna manera?
Respuestas:
Las tuplas son inmutables y no se supone que se cambien, para eso es el tipo de lista. Podría reemplazar cada tupla por
originalTuple + (newElement,)
, creando así una nueva tupla. Por ejemplo:t = (1,2,3) t = t + (1,) print t (1,2,3,1)
Pero prefiero sugerir ir con listas desde el principio, porque son más rápidas para insertar elementos.
Y otra pista: no sobrescriba el nombre incorporado
list
en su programa, más bien llame a la variablel
o algún otro nombre. Si sobrescribe el nombre integrado, ya no podrá usarlo en el ámbito actual.fuente
t += 1,
sqlite3
base de datos y necesito hacer una tupla de los valores para agregar (ya que la sintaxis requerida esVALUES (v1, v2, v3, ...)
. En este caso, saber cómo agregar valores a un tupla es muy beneficioso.Según la sintaxis, supongo que esto es Python. El punto de una tupla es que es inmutable, por lo que debe reemplazar cada elemento con una nueva tupla:
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')]
fuente
En Python, no puedes. Las tuplas son inmutables.
Sin embargo , en la lista de contenido, puede reemplazar la tupla
('1', '2', '3', '4')
con una('1', '2', '3', '4', '1234')
tupla diferente .fuente
Como se mencionó en otras respuestas, las tuplas son inmutables una vez creadas, y una lista podría servir mejor a sus propósitos.
Dicho esto, otra opción para crear una nueva tupla con elementos adicionales es usar el operador splat:
new_tuple = (*old_tuple, 'new', 'items')
Me gusta esta sintaxis porque parece una nueva tupla, por lo que comunica claramente lo que está tratando de hacer.
Usando splat, una posible solución es:
list = [(*i, ''.join(i)) for i in list]
fuente
Como han respondido otras personas, las tuplas en Python son inmutables y la única forma de 'modificar' una es crear una nueva con los elementos adjuntos incluidos.
Pero la mejor solución es una lista. Cuando sea necesario llamar a cualquier función o método que requiera una tupla, cree una tupla utilizando tuple (lista).
fuente
Estaba repasando algunos detalles relacionados con
tuple
ylist
, y lo que entendí es:Heterogeneous
tipo de datos de colecciónPor lo tanto, para agregar un nuevo elemento a una tupla, debe convertirlo en
list
y realizar unaappend()
operación en él, luego volver a convertirlo en tupla.fuente
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)
fuente
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_))
SALIDAS es lo que deseas
fuente