Single-element tuples in Python

Single-element tuples in Python

Single Element Tupleslink image 1

Disclaimer: This post has been translated to English using a machine translation model. Please, let me know if you find any mistakes.

If in Python we want to create a list with a single element, we simply write the element between square brackets, for example:

	
< > Input
Python
list = [1]
type(list)
Copied
>_ Output
			
list

However, with tuples we cannot write an element within parentheses

	
< > Input
Python
tupla = (1)
type(tupla)
Copied
>_ Output
			
int

As we can see, Python interprets it as an integer, not as a tuple. To solve this, a comma is added after the element, for example:

	
< > Input
Python
tupla = (1,)
type(tupla)
Copied
>_ Output
			
tuple

What is this for? When we have a function that returns several parameters, what it is actually returning is a tuple. So, it may happen that we have a code that calls a function, checks the length of the returned tuple, and processes each element of the tuple. Let's look at an example

	
< > Input
Python
def return_tuple():
return 1, 2, 3
def process_tuple():
tuple = return_tuple()
for i in tuple:
print(i)
process_tuple()
Copied
>_ Output
			
1
2
3

But, what happens in this example if the function doesn't return a tuple? We would get an error

	
< > Input
Python
def return_int():
return 1
def process_tuple():
tuple = return_int()
for i in tuple:
print(i)
process_tuple()
Copied
>_ Output
			
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[5], line 9
6 for i in tuple:
7 print(i)
----> 9 process_tuple()
Cell In[5], line 6, in process_tuple()
4 def process_tuple():
5 tuple = return_int()
----> 6 for i in tuple:
7 print(i)
TypeError: 'int' object is not iterable

We get an error because Python tries to iterate through what the function returns, but since it returns an integer it can't iterate through it. We have two ways to solve this, one is that the processing function checks if a tuple has been returned and in that case processes it, another is that the function that returns values always returns a tuple, even if it is a single element.

	
< > Input
Python
def return_int():
return 1,
def process_tuple():
tuple = return_int()
for i in tuple:
print(i)
process_tuple()
Copied
>_ Output
			
1

As we see, in the return_int function a , has been placed at the end of the return, so it is returning a tuple with a single element, which is why the process_tuple function will not give an error.

Frequently asked questions

Why do I get "TypeError: 'int' object is not iterable" when doing for i in tuple: on a function's return value?

This happens when a function like def return_int(): return 1 returns a single value: in Python, return 1 produces an int, not a tuple, so the for i in tuple: loop can't iterate over it. The fix is to force the function to return a one-element tuple by adding a trailing comma: return 1, (equivalent to return (1,)), which turns type(tupla) from int into tuple and makes the loop work again.

How do I make a function always return a tuple, even when it only has one value to return?

Just add a comma after the value in the return statement, e.g. return 1, instead of return 1. This matters when another function processes the result with a generic loop (for i in tuple: print(i)) that always expects a tuple, similar to the return 1, 2, 3 pattern in return_tuple(): that way the consuming code doesn't need to check whether it got an int or a tuple.

Continue reading

Last posts -->

Have you seen these projects?

Gymnasia

Gymnasia Gymnasia
Expo
React Native
TypeScript
OpenAI
Anthropic

Fitness app with two agents that run entirely on the device, with no backend, so the user's data never leaves the phone. A BYOK conversational coach with adapters for OpenAI, Anthropic and Google, 12 local tools and a remote system prompt with offline fallback, plus a vision subagent that estimates macronutrients from food photos, with barcode scanning against OpenFoodFacts.

LangGraph Deep Researcher

LangGraph Deep Researcher LangGraph Deep Researcher
Python
LangGraph
FastAPI
React
TypeScript
Docker

Multi-agent research system built with LangGraph. A supervisor breaks your question down into topics and launches search sub-agents in parallel; each one compresses its findings before handing them to a writer agent that produces the final sourced markdown report. Live streaming over WebSockets, a configurable model per role and bring-your-own API keys that are never persisted server-side.

Tau

Tau Tau
Python
LangChain

Multi-agent tutoring system for secondary school students, with one agent per subject and course material written and validated by a team of teachers. It was used with real students at a private school in Spain and at a secondary school in Colombia.

View all projects -->
>_ Available for projects

Do you have an AI project?

Let's talk.

maximofn@gmail.com

Machine Learning and AI specialist. I develop solutions with generative AI, intelligent agents and custom models.

Do you want to watch any talk?

Last talks -->

Do you want to improve with these tips?

Last tips -->

Use this locally

Hugging Face spaces allow us to run models with very simple demos, but what if the demo breaks? Or if the user deletes it? That's why I've created docker containers with some interesting spaces, to be able to use them locally, whatever happens. In fact, if you click on any project view button, it may take you to a space that doesn't work.

Flow edit

Flow edit Flow edit

FLUX.1-RealismLora

FLUX.1-RealismLora FLUX.1-RealismLora
View all containers -->
>_ Available for projects

Do you have an AI project?

Let's talk.

maximofn@gmail.com

Machine Learning and AI specialist. I develop solutions with generative AI, intelligent agents and custom models.

Do you want to train your model with these datasets?

short-jokes-dataset

HuggingFace

Dataset with jokes in English

Use: Fine-tuning text generation models for humor

231K rows 2 columns 45 MB
View on HuggingFace →

opus100

HuggingFace

Dataset with translations from English to Spanish

Use: Training English-Spanish translation models

1M rows 2 columns 210 MB
View on HuggingFace →

netflix_titles

HuggingFace

Dataset with Netflix movies and series

Use: Netflix catalog analysis and recommendation systems

8.8K rows 12 columns 3.5 MB
View on HuggingFace →
View more datasets -->