how to add value to a tuple?
I’m working on a script where I have a list of tuples like (‘1′,’2′,’3′,’4’) . e.g.:
Now I need to add ‘1234’ , ‘2345’ , ‘3456’ and ‘4567’ respectively at the end of each tuple. e.g:
Is it possible in any way?
10 Answers 10
Tuples are immutable and not supposed to be changed — that is what the list type is for.
However, you can replace each tuple using originalTuple + (newElement,) , thus creating a new tuple. For example:
But I’d rather suggest to go with lists from the beginning, because they are faster for inserting items.
And another hint: Do not overwrite the built-in name list in your program, rather call the variable l or some other name. If you overwrite the built-in name, you can’t use it anymore in the current scope.
![]()
Based on the syntax, I’m guessing this is Python. The point of a tuple is that it is immutable, so you need to replace each element with a new tuple:
As mentioned in other answers, tuples are immutable once created, and a list might serve your purposes better.
That said, another option for creating a new tuple with extra items is to use the splat operator:
new_tuple = (*old_tuple, ‘new’, ‘items’)
I like this syntax because it looks like a new tuple, so it clearly communicates what you’re trying to do.
Using splat, a potential solution is:
list = [(*i, ».join(i)) for i in list]
In Python, you can’t. Tuples are immutable.
On the containing list, you could replace tuple (‘1’, ‘2’, ‘3’, ‘4’) with a different (‘1’, ‘2’, ‘3’, ‘4’, ‘1234’) tuple though.
As other people have answered, tuples in python are immutable and the only way to ‘modify’ one is to create a new one with the appended elements included.
But the best solution is a list. When whatever function or method that requires a tuple needs to be called, create a tuple by using tuple(list).
I was going through some details related to tuple and list , and what I understood is:
- Tuples are Heterogeneous collection data type
- Tuple has Fixed length (per tuple type)
- Tuple are Always finite
So for appending new item to a tuple, need to cast it to list , and do append() operation on it, then again cast it back to tuple.
But personally what I felt about the Question is, if Tuples are supposed to be finite, fixed length items and if we are using those data types in our application logics then there should not be a scenario to appending new items OR updating an item value in it. So instead of list of tuples it should be list of list itself, Am I right on this?
Python: Append to a Tuple (3 Easy Ways)

In this tutorial, you’ll learn how to use Python to append to a tuple. Because Python tuples are immutable objects, meaning they can’t be changed once they are created, appending to a tuple is a bit trickier than appending to, say, a Python list.
By the end of this tutorial, you’ll have learned what Python tuple immutability means, how to append to a tuple using list conversion, tuple concactenation, and tuple unpacking. You’ll also learn when you can modify contents in a tuple, using some fringe cases. Let’s get started!
The Quick Answer: Use Tuple Concatenation

Table of Contents
What are Python Tuples?
Python tuples are one of the main container data structures available within Python. They are generally created using regular parentheses () . Because they are container data types, they can hold different items and allow items of different data types, meaning that they are heterogeneous.
Lists are also ordered and indexed, meaning that we can access a tuples’ items using its index position. All of this probably makes tuples sound very similar to Python lists, but they have one significant difference: they are immutable.
What does immutable mean? The Python documentation defines immutable as having a fixed value and not able to be changed. This, of course, presents a problem if we want to use Python to append to a tuple. When we want to append a value to something, this in fact involves changing (or mutating) that item. Because of this, when we refer to appending to a tuple in Python throughout this tutorial, we actually mean creating a new object which appends a value to an existing tuple.
Let’s see what creating a tuple looks like in Python. We’ll instantiate a new tuple with a number of different values and then print out the type of the object using the type() function.
We can see here that by printing out the type of our object that this returned <class ‘tuple’> . Now, let’s see what happens when we try to modify the third item in our tuple.
We can see that this raises a TypeError error. We know that Python lists have an .append() method. Let’s see what happens when we try to apply this to our tuple.
This returns an AttributeError error. So how do we actually append to a Python tuple? In the Next section, you’ll learn how to use Python to append to a tuple by using tuple concatenation.
Want to learn more about Python for-loops? Check out my in-depth tutorial that takes your from beginner to advanced for-loops user! Want to watch a video instead? Check out my YouTube tutorial here.
Append to a Python Tuple Using Tuple Concatenation
While Python tuples don’t offer a dedicated method to append values, we can emulate appending to a tuple by using tuple concatenation. In fact, when we do this, we actually create a new tuple, even if we apply it to the same variable as before.
The way that this works is by using the + operator, which allows us to combine two tuples.
Let’s say that we have one tuple (1, 2, 3) and we want to append the value 4 to it. We can use the + operator to concatenate the value onto our tuple. Let’s see what this looks like:
We can see here that our tuple had a value appended to it. The way that we accomplished this is by first converting our value to a tuple. This needed to be done, since we can only concatenate a tuple to a tuple. If we simple tried to append the value, this would raise a TypeError .
I do want to stress, though, that is an entirely new object. We can verify this printing out the id of the object before and after we append to it, using the id() function. Let’s take a look here:
We can see that the new tuple, despite being assigned to the same variable is a new object.
In the next section, you’ll learn how to use Python to append to a tuple using list conversion.
Want to learn how to get a file’s extension in Python? This tutorial will teach you how to use the os and pathlib libraries to do just that!
Append to a Python Tuple by List Conversion
In this section, you’ll learn how to use Python to append to a tuple by first converting the tuple to a list. Because Python lists are mutable, meaning they can be changed, we can use the list .append() method to append a value to it. Once we have appended the value, we can turn it back to a tuple.
Let’s see what this process looks like. Again, well use our previous example: we’ll take our tuple containing (1,2,3) and append the value of 4 to it.
Let’s break down what we did here:
- We created our tuple, a_tuple
- We converted our tuple to a list
- We apples the .append() list method and appended our value
- We converted our list back to a tuple
In the next section , you’ll learn how to use tuple unpacking to append a value to a tuple.
Want to learn more about calculating the square root in Python? Check out my tutorial here, which will teach you different ways of calculating the square root, both without Python functions and with the help of functions.
Append to a Python Tuple with Tuple Unpacking
In this section, you’ll learn another method to append a value to a Python tuple. Specifically, you’ll learn how to use tuple unpacking (using the *) operator, to append a value to a tuple. Similar to the methods described above, you’ll actually be creating a new tuple, but without needing to first create a list.
The unpacking operator, *, is used to access all the items in a container object, such as a tuple. In order to append a value, we first unpack all the values of the first tuple, and then include the new value or values.
Let’s see what this looks like:
Let’s break down what we did here:
- We created our first, original tuple
- We then generated a new tuple with the same name. In this tuple we unpacked all the values in the original tuple and then included the new value.
In the next section, you’ll learn about a fringe case where you can append to a tuple’s value.
Want to learn more about Python f-strings? Check out my in-depth tutorial, which includes a step-by-step video to master Python f-strings!
Modify a Tuple’s Contents by Appending a Value
There is one fringe exception where you can append to a tuple without raising an error. Specifically, if one of your tuples’ items is a mutable object, such as a list, you can modify the item.
Really, we’re not appending to the tuple itself, but to a list contained in the tuple.
Let’s see how we can do this:
Let’s break down what we did here:
- We created our new tuple, where one item is a list
- We used the .append() method on our tuples’ list
The reason that this works is because we’re not modifying the tuple’s identity but just the object within it.
Want to learn how to calculate and use the natural logarithm in Python. Check out my tutorial here, which will teach you everything you need to know about how to calculate it in Python.
Conclusion
In this tutorial, you learned how to use Python to append to a tuple. You learned about why Python tuples are immutable and what benefits this can bring to your programs. You then learned how to append to a Python tuple using tuple concatenation, list conversion and tuple unpacking. Finally, you learned in which cases it is possible to modify a tuples contents by appending to a tuples’ value.
To learn more about Python tuples, check out the official documentation here.
Кортеж (tuple) в Python
Кортеж в Python похож на список. Разница между ними заключается в том, что мы не можем изменить элементы кортежа после присваивания им значений, тогда как элементы списка мы можем изменить.
Создание кортежа в Python
Кортеж создается путем помещения всех элементов в круглые скобки () , разделенные запятыми. Круглые скобки необязательны, однако их использование является хорошей практикой. Кортеж может содержать любое количество элементов, и они могут быть разных типов (int, float, list, string и т.д.). Например:
Также мы можем создавать кортежи без использования круглых скобок:
Создание кортежа с одним элементом
В Python при создании кортежа с одним элементом нужно указывать запятую в конце, чтобы указать, что это именно кортеж (а не строка):
Мы можем использовать функцию type(), чтобы узнать, к какому классу принадлежит переменная или значение:
(«hello») — это строка, поэтому функция type() возвращает <class ‘str’> ;
(«hello»,) и «hello», — оба кортежа, поэтому функция type() возвращает <class ‘tuple’> .
Доступ к элементам кортежа в Python
Подобно списку, каждый элемент кортежа представлен индексными номерами (0, 1, …), где индекс первого элемента 0. Номер индекса используется для доступа к элементам кортежа. Например:
1. Индексация
Мы можем использовать оператор индекса [] для доступа к элементу в кортеже, у которого индекс начинается с 0.
Таким образом, кортеж, состоящий из 6 элементов, будет иметь индексы от 0 до 5. Попытка получить доступ к индексу за пределами диапазона индексов кортежа (например, к индексам 6 или 7) вызовет ошибку IndexError .
Индекс должен быть целым числом, поэтому мы не можем использовать тип float или другие типы. Это приведет к ошибке TypeError .
Аналогично, доступ к вложенным кортежам осуществляется с использованием вложенной индексации, как показано в следующем примере:
Кортежи (Tuple)
В Swift кортежи используются для создания упорядоченных списков значений.
Что такое кортеж?
Кортеж (tuple) представляет собой упорядоченный, разделенный запятыми список значений, который обрамляется круглыми скобками. И каждое значение внутри кортежа может относиться к разным типам данных.
Синтаксис кортежа
В общей форме кортеж записывается так:
- (DataType, . ) — тип данных кортежа: в круглых скобках указаны типы данных элементов;
- (value1, . ) — значения элементов кортежа: в круглых скобках указаны значения элементов.
В короткой форме записи тип данных (DataType, . ) можно не указывать. Тип данных будет определен исходя из контекста значения введенных элементов.
В приведённом выше примере создаётся константа flight , которая инициализирована со значением в виде кортежа («LAX», 747) . В кортеже можно увидеть два значения, которые разделены запятой и которые заключены в круглые скобки.
Тип данного кортежа (String, Int) — определён из типа данных его элементов.
Так как кортеж — это упорядоченный список, то порядок элементов имеет значение. Кортеж по типу (Int, String) и кортеж по типу (String, Int) — это два разных кортежа по типу данных.
Приведенные ниже кортеж имеют разные типы:
Несмотря на то, что оба кортежа содержат одинаковые значения с одинаковым типом, их типы различны, поскольку порядок значений различен.
Не следует путать кортежи с массивами, словарями или множествами. Кортежи не являются коллекциями, однако, они так же объединяют значения.
Значения кортежа могут иметь разные типы и можно изменять их значения при условии, что они объявлены как изменяемые с помощью переменной var .
После инициализации кортежа его тип данных фиксируется. А это значит, что нельзя добавлять в него новые элементы. Порядок элементов кортежа также не может измениться.
Операции с кортежами
Предположим, необходимо хранить информацию о названии и цене некоторого продукта. Можно создать кортеж с одним значением для хранения имени (String) и другим значением — для хранения цены (Float).
Создание кортежа
В Swift используются круглые скобки () для хранения элементов кортежа.
Здесь product — это кортеж со строковым значением «Macbook» и целым числом 1099,99 .
Получение значений элементов кортежа
Как и в массиве, каждый элемент кортежа имеет индекс, который представлен порядковыми номерами (0, 1, …), где первый элемент имеет индекс 0 .
Для доступа к элементам кортежа используется номер индекса.
В отличие от массивов, где доступ по индексу осуществляется с помощью квадратных скобок ( [] ), в кортежах используется конструкция “обозначение через точку” (dot-notations) — как при получении доступа к элементам классов, структур: пишется имя кортежа, потом ставится точка . и за ней — необходимый индекс.
В приведенном выше примере был создан кортеж с именем product с двумя значениями: «MacBook» и 1099.99 . Здесь использовался номер индекса: product.0 и product.1 для доступа к элементам кортежа.
Примечание. Поскольку первое значение кортежа — это строка, а второе — целое число, то тип кортежа — (String, Int) .
Попытка доступа к элементу по несуществующему индексу приведёт к ошибке.
Нельзя получить доступ к несуществующему элементу. В этом случае ошибка сообщает, что в кортеже нет элемента с запрошенным индексом.
Изменение элемента кортежа
Можно изменить элемент кортежа, присвоив новое значение по конкретному индексу.
В приведенном выше примере был создан кортеж с именем product со значениями: MacBook и 1099,99 . Обратите внимание на строку:
Здесь было изменено значение кортежа с индексом 1 : с 1099.99 на 1299,99 .
Примечание. Индекс кортежа всегда начинается с 0. Следовательно, первый элемент кортежа имеет индекс 0, а не 1.
Добавление/удаление элементов из кортежа
Нельзя добавлять или удалять элементы из кортежа в Swift.
Нельзя добавить элемент по методу, как в словаре.
Нельзя удалить элемент, метода remove() нет для кортежа.
Здесь создали кортеж со значениями: «Programiz» и «Apple» . Теперь тип кортежа фиксируется на (String, String) . Итак, когда пытаемся добавить и удалить элементы из кортежа, то получаем ошибки.
Сравнение кортежей
Можно сравнивать кортежи друг с другом, если их типы одинаковы и если сами типы соответствуют протоколу Equatable . Другими словами, если можно сравнить значения, то можно сравнить и сами кортежи:
В этом примере, в конце получается ошибка компиляции, посколько типы сравниваемых кортежей не совпадают.
Именованные кортежи
В Swift также можно указать имена для каждого элемента кортежа.
Чтобы получить доступ к элементам именованного кортежа, также можно использовать эти имена вместо номеров индексов:
Доступ по имени элемента осуществляется так же, как и по индексу: используя точку ( . ) после имени кортежа.
Пример именованного кортежа:
В приведенном выше примере были предоставлены имена: product и version для первого и второго элемента кортежа. Использовалось “обозначение через точку” (dot-notations) для доступа к элементам и подставлялись имена для доступа к соответствующим значениям кортежа.
Примечание. Лучше всего использовать именованные кортежи, так как это делает код более читабельным.
Вложенный кортеж
В Swift можно создать кортеж, как элемент другого кортежа.
Здесь есть кортеж («a», «b», «c») в качестве третьего элемента кортежа alphabets . Это называется вложенным кортежем.
Пример вложенного кортежа:
В приведенном выше примере обратите внимание на строку:
Здесь получили доступ к третьему элементу кортежа alphabets . Поскольку третий элемент также является кортежем, использовалось “обозначение через точку” (dot-notations):
для доступа к первому элементу вложенного кортежа.
Передача значений кортежа в переменные или константы
Для этого можно разложить кортеж на отдельные элементы и присвоить их соответствующим константам или переменным.
Вот что происходит в приведенном выше коде:
- Есть кортеж («LAX», 747, 270) . Он не присваивается отдельной переменной или константе, но вместо этого, его значения раскладываются на отдельные элементы и присваиваются отдельным константам;
- Назначем константе airport значение «LAX» ;
- Подчеркивание _ — это значение, которое игнорируется.
Еще пример. Предположим, что используем функцию, которая возвращает нам код состояния HTTP. Такой код обычно состоит из числа, например “404”, и некоторого текста.
Функция getStatusCode() возвращает кортеж типа (Int, String) , который содержит два значения.
Если необходимо получить доступ к отдельным значениям, то раскладываем кортеж с помощью (code, text) . Далее, можно использовать отдельные константы code и text , чтобы вывести на консоль нужные значения.
Больше про переменные можно узнать в отдельной статье. См. ссылку внизу.
Словарь и массив внутри кортежа
В Swift можно использовать словарь для добавления элемента в кортеж.
В приведенном выше примере, третий элемент кортежа — это словарь:
Можно добавлять элементы в словарь. Для этого необходимо получить доступ к словарю и добавить элемент стандартным способом. Для этого использовался следующий код, чтобы добавить элемент в словарь:
Таким образом, можно добавить элемент в кортеж. И тип кортежа остается прежним (String, String, Dictionary) . Таким образом, не получаем никаких ошибок.
Таким же способом можно использовать массив.
Больше про массивы и словари можно узнать в отдельной статье. См. ссылку внизу.
Кортежи в программировании на Swift
Кортежи весьма полезны в разработке для iOS. На данном этапе были рассмотрены несколько типичных вариантов использования кортежей. Что еще можно с ними сделать?
Можно рассматривать кортежи как крошечные классы, которые можно использовать без создания самого класса.
Например, есть такой класс Flight :
Приведенный выше код сначала определяет класс Flight , а затем инициализирует экземпляр данного класса flight . Можно сделать то же самое с кортежем, с гораздо меньшим количеством кода:
Также можно использовать псевдоним типа (Typealias):
Здесь создаётся новый псевдоним типа Flight для типа данных кортежа (airport: String, airplane: Int) . Далее, можно использовать тип данных Flight вместо типа данных кортежа (airport: String, airplane: Int) . Константа flight будет с типом данных кортежа, что позволит получать доступ к элементам по индексу или именам элементов.
Кортежи можно использовать для доступа к индексам и значениям элементов массива с помощью функции enumerated() :
В этом примере, в цикле с помощью функции enumerated() была получена пара индекс-значение в виде кортежа в каждой итерации цикла. В качестве примера, здесь выводилась в консоль строка текста, которая содержала индекс и значение каждого элемента кортежа.
Еще полезные ссылки
Также информацию по кортежам можно получить на странице официальной документации.