Ich arbeite an einem Skript, in dem ich eine Liste mit Tupeln wie habe ('1','2','3','4')
. z.B:
list = [('1','2','3','4'),
('2','3','4','5'),
('3','4','5','6'),
('4','5','6','7')]
Jetzt muss ich hinzufügen '1234'
, '2345'
, '3456'
und '4567'
jeweils am Ende jedes Tupel. z.B:
list = [('1','2','3','4','1234'),
('2','3','4','5','2345'),
('3','4','5','6','3456'),
('4','5','6','7','4567')]
Ist es irgendwie möglich?
Antworten:
Tupel sind unveränderlich und dürfen nicht geändert werden - dafür ist der Listentyp gedacht. Sie können jedes Tupel durch ersetzen
originalTuple + (newElement,)
und so ein neues Tupel erstellen. Zum Beispiel:t = (1,2,3) t = t + (1,) print t (1,2,3,1)
Ich würde jedoch eher vorschlagen, von Anfang an Listen zu verwenden, da diese schneller zum Einfügen von Elementen geeignet sind.
Und noch ein Hinweis: Überschreiben Sie nicht den
list
in Ihrem Programm integrierten Namen, sondern rufen Sie die Variablel
oder einen anderen Namen auf. Wenn Sie den integrierten Namen überschreiben, können Sie ihn im aktuellen Bereich nicht mehr verwenden.quelle
t += 1,
sqlite3
Datenbank iterativ Werte hinzufügen möchte und ein Tupel der hinzuzufügenden Werte erstellen muss (da die erforderliche Syntax lautetVALUES (v1, v2, v3, ...)
. In diesem Fall muss ich wissen, wie man a Werte hinzufügt Tupel ist sehr vorteilhaft.Aufgrund der Syntax schätze ich, dass dies Python ist. Der Sinn eines Tupels ist, dass es unveränderlich ist. Sie müssen also jedes Element durch ein neues Tupel ersetzen:
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')]
quelle
In Python können Sie nicht. Tupel sind unveränderlich.
In der enthaltenen Liste können Sie jedoch das Tupel
('1', '2', '3', '4')
durch ein anderes('1', '2', '3', '4', '1234')
Tupel ersetzen .quelle
Wie in anderen Antworten erwähnt, sind Tupel nach ihrer Erstellung unveränderlich, und eine Liste kann Ihren Zwecken besser dienen.
Eine weitere Option zum Erstellen eines neuen Tupels mit zusätzlichen Elementen ist die Verwendung des Splat-Operators:
new_tuple = (*old_tuple, 'new', 'items')
Ich mag diese Syntax, weil sie aussieht wie ein neues Tupel und daher klar kommuniziert, was Sie versuchen zu tun.
Mit splat ist eine mögliche Lösung:
list = [(*i, ''.join(i)) for i in list]
quelle
Wie andere Leute geantwortet haben, sind Tupel in Python unveränderlich und die einzige Möglichkeit, eines zu ändern, besteht darin, ein neues mit den angehängten Elementen zu erstellen.
Die beste Lösung ist jedoch eine Liste. Wenn eine Funktion oder Methode aufgerufen werden muss, für die ein Tupel erforderlich ist, erstellen Sie ein Tupel mithilfe von Tupel (Liste).
quelle
Ich habe einige Details im Zusammenhang mit
tuple
und durchgesehenlist
, und was ich verstanden habe, ist:Heterogeneous
ErfassungsdatentypenUm ein neues Element an ein Tupel anzuhängen, müssen Sie es in ein Tupel umwandeln
list
undappend()
es bearbeiten. Anschließend müssen Sie es erneut in ein Tupel umwandeln.quelle
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)
quelle
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_))
AUSGÄNGE ist das, was Sie wünschen
quelle