PedroGeoGISdev
  • Home
  • Linux OS
    • Linux: concepts
    • Linux: basic concepts
    • Linux: Bash
    • Linux: su and sudo
    • Linux: pipes
    • Linux: File System
    • Linux: Virtual Machines

    • Linux: distros
    • Linux Distros: Ubuntu
    • Linux Distros: Mint
    • Linux Distros: Debian
    • Linux Distros: openSuse
    • Linux Distros: Manjaro
    • Linux Distros: Red Hat Enterprise

    • Linux: laboratories
    • Linux Lab#LI01-1: Choose Linux
    • Linux Lab#LI01-2: Install at least three distributions
    • Linux Lab#LI01-3: Adjust user permissions
    • Linux Lab#LI02-1: Export env user with grep and pipe
    • Linux Lab#LI03-1: Manage users and groups
    • Linux Lab#LI03-2: Manage files
    • Linux Lab#LI03-3: Manage software
    • Linux Lab#LI03-4: Manage hardware
    • Linux Lab#LI04-1: Bash scripting, qtool
    • Linux Lab#LI04-2: Bash scripts as terminal tool
    • Linux Lab#LI04-3: Distribute the terminal app

    • Linux readings
    • Linux Resources
  • DevOps
    • What is DevOps
    • DevOps: Introduction
    • DevOps: Agile and Microservices
    • Infrastructure as code (IaC)
    • Immutable Infrastructure
    • Software Lifecycle

    • Documentation
    • How to document: Quarto and Obsidian

    • Network protocols
    • Network: Basics
    • Network: Client-server
    • Network Protocols
    • Network: DNS
    • Network: API Rest
    • Network: gRPC
    • Network: Websocket
    • Network: SMTP
    • Network: Ping
    • Network: UDP
    • Network: webhook
    • Network: SOAP
    • Network: graphQL

    • Version Control
    • Git
    • GitHub
    • Idea and GitHub 2023
    • Git and GitHub 2023 CLI

    • IDEs
    • IDE: Visual Code
    • IDE: IntellJIdea

    • DevOps tools
    • Amazon Web Services AWS
    • Docker
    • Jenkins pipelines
    • Kubernetes k8s
    • Digital Ocean
    • Nagios
    • Ansible

    • DevOps Laboratories
    • Lab 1: chat App
    • Lab 2: Spring Boot AWS AEB manually
    • Lab 3: Spring Boot and AWS S3 publisher
    • Lab 4: Spring Boot Docker/Jenkins
    • Lab 5: k8s on Digital Ocean
    • Lab 6: Spring Boot AWS codecommit

    • DevOps readings
    • DevOps Resources
  • MarkUp
    • MarkUp Languages
    • Introduction Markup
    • HTML Markup
    • Markdown Markup
    • Markdown and HTML working together, good idea?

    • Quarto Markdown
    • Quarto Markdown: basics
    • Quarto Markdown: creating
    • Quarto Markdown: publishing
    • Quarto Markdown: code & data
    • Quarto Markdown: api rest call
    • Quarto Markdown: OJS Cells
    • Quarto Markdown: cheat-sheet

    • Styling: CSS
    • Cascade Style Sheet
    • Cascade Style Sheet: Box Model and Containers
    • CSS: W3.css

    • MarkUp Languages Laboratories
    • Lab#MD01-1: Create and publish by Quarto

    • MarkUp Languages readings
    • MarkUp Languages Resources
  • Java SE
    • What is Java SE
    • Java Standard Edition: Basics
    • Java Standard Edition: Principles
    • Java MOOC Helsinki
    • Java MOOC Helsinki Syllabus

    • Java Create Project
    • Java SE: Maven
    • Java SE: Create Maven Project
    • Java SE: Project push GitHub
    • Java SE: JUnit and TDD

    • Java Concepts
    • Java SE: Class and Objects
    • Java SE: Scope
    • Java SE: static modifier
    • Java SE: Coupling and DDD
    • Java SE: Packages
    • Java SE: Abstract/Interface
    • Java SE: Java 8

    • Java Principles
    • Java SE: Encapsulation
    • Java SE: Abstraction
    • Java SE: Inherence
    • Java SE: Polymorphism

    • Java Design Patterns
    • Java Patterns: UML
    • Java Patterns: Types
    • Singleton
    • Factory
    • Abstract Factory
    • Builder
    • Facade
    • Bridge
    • Decorator
    • Composite
    • Observer
    • Strategy
    • State
    • Commander

    • Java SE Laboratories
    • Lab#SE00-1: Maven Person
    • Lab#SE00-2: Maven Clinic
    • Lab#SE00-3: Library Model
    • Lab#SE00-4: Abstract/Interface Human
    • Lab#SE01-1: Maven/Gradle Person and Account
    • Lab#SE01-2: Maven/Gradle Person and Account stored in JSON
    • Lab#SE02-1: Movie/Review, Model
    • Lab#SE02-2: Movie/Review, CRUD Operations
    • Lab#SE02-3: Movie/Review, factory
    • Lab#SE02-4: Movie/Review, interactivity and coupling
    • Lab#SE02-5: Movie/Review, simulate interactivity by console
    • Lab#SE03-1: Library/Book, Core-Model
    • Lab#SE03-2: Library/Book, Sprint Zero
    • Lab#SE03-3: Library/Book, Expand Model
    • Lab#SE04-1: healthyFood Restaurant, Core Model

    • Java SE readings
    • Java SE Resources
  • Python
    • Python Basics
    • Python: Basic Concepts
    • Python: Numbers
    • Python: Strings
    • Python: Conditionals
    • Python: Lists and Loops
    • Python: Nested Loops
    • Python: Tuples
    • Python: Sets
    • Python: Dictionaries
    • Python: Functions
    • Python: Higher-order Functions
    • Python: Variable Scope
    • Python: Variable Assigment
    • Python: None keyword in Python
    • Python: Object Oriented Programming (OOP)
    • Python: Inheritance and Polymorphism
    • Python: Encapsulation
    • Python: Abstraction
    • Python: Exceptions
    • Python: Cheat-Sheets
  • JavaScript
    • JavaScript Basics
    • JavaScript: Fundamentals
    • JavaScript: Data Types
    • JavaScript: Variables
    • JavaScript: Operators
    • JavaScript: Conditionals
    • JavaScript: Loops
    • JavaScript: Functions
    • JavaScript: Arrays
    • JavaScript: Objects

    • React Framework

    • ReactJS: Principles
    • React JS: Introduction
    • React JS: render virtual DOM
    • React JS: Create a React project
    • React JS: Components
    • React JS: JSX
    • React JS: props and state

    • JavaScript: web scripting
    • JavaScript: basics
    • JavaScript: functions
    • JavaScript: objects
    • JavaScript: variables
    • JavaScript: flux control

    • ES6: ECMAScript 6
    • React JS ES6: arrow functions
    • React JS ES6: import modules
    • React JS ES6: array, data and key
    • React JS ES6: destructuring
    • React JS ES6: spread operator

    • ReacJS 18: Hooks
    • React JS: Rules of Hooks
    • ReactJS: useState
    • React JS: useReducer
    • React JS: useRef
    • React JS: useEffect
    • React JS: useContext
    • ReactJS: useMemo
    • ReactJS: custom hooks

    • ReactJS: Designing an App
    • React JS App: async
    • React JS App: events
    • React JS App: router
    • React JS App: conditional render
    • React JS App: styling

    • React JS: Laboratories
    • Lab#RE01-1: API Rest Axios
    • Lab#RE02-1: Router & Hooks
    • Lab#RE03-1: to-do app
    • Lab#RE03-2: HighCharts
    • Lab#RE03-3: API Rest Mono
    • Lab#RE03-4: API Rest Domains
    • Lab#RE03-5: data management
    • Lab#RE04-1: todo & server
    • Lab#RE04-2: Spring Boot & ReactJS
    • Lab#RE05-1: chat & websockets
    • Lab#RE05-2: chat: backend
    • Lab#RE05-3: chat & AWS
    • Lab#RE05-4: chat: test ws AWS
    • Lab#RE05-5: chat & front
    • Lab#RE05-6: chat & ws: front
    • Lab#RE06-1: healthyFood Restaurant
    • Lab#RE06-1-PR: create a pull request
    • Lab#RE07-1: traffic lights simulation

    • React JS readings
    • ReactJS Resources
  • Backend
    • Spring Legacy
    • Spring Framework
    • Spring MVC
    • Springs Servlets

    • Spring Boot Basics
    • Spring Boot: fundamentals
    • Spring Boot: create a Project
    • Spring Boot: H2 DB and Thymeleaf
    • Spring Boot: cycle

    • Spring Boot Concepts
    • Spring Boot: Dependency Injection
    • Spring Boot: Annotations
    • Spring Boot: Controller
    • Spring Boot: View
    • Spring Boot: Thymeleaf
    • Spring Boot: Vaadin Flow
    • Spring Boot: Vaadin Hilla
    • Spring Boot: Model
    • Spring Boot: Rest
    • Spring Boot: Data & DB
    • Spring Boot: JPA & DI
    • Spring Boot: JPA Mappings
    • Spring Boot: JPA Relationships
    • Spring Boot: JPA Queries
    • Spring Boot: JPA Inherence
    • Spring Boot: Scaling

    • Spring Boot Laboratories
    • Lab#SB00-1: Library UML
    • Lab#SB00-2: CRUD User
    • Lab#SB00-3: LibraryManagement
    • Lab#SB00-4: API Rest
    • Lab#SB00-5: Rest & JPA-H2
    • Lab#SB00-6: Rest & MongoDB
    • Lab#SB00-7: Styling
    • Lab#SB01-1: DataBase
    • Lab#SB02-1: JPA Relationships
    • Lab#SB03-1: APIs & cloud
    • Lab#SB04-1: JPA Inherence
    • Lab#SB05-1: API Rest
    • Lab#SB06-1: employeeCourse
    • Lab#SB07-1: monitor Book
    • Lab#SB08-1: Restaurant UML
    • Lab#SB08-2: Vaadin
    • Lab#SB08-3: H2 and API Rest
    • Lab#SB08-4: JPA
    • Lab#SB08-5: Test API Rest
    • Lab#SB09-1: SpringIO Conference

    • Spring Boot readings
    • Spring Boot Resources
  • Learning
    • Vocabulary
    • General Vocabulary
    • SCRUM Vocabulary
    • DevOps Vocabulary
    • Java SE Vocabulay
    • Spring Boot Vocabulary
    • DataBase Vocabulary
    • ReactJS Vocabulary
    • Web Vocabulary

    • Learning
    • Useful Questions
    • Learning: tips
    • Writing
    • Taking Notes
    • Comments
    • Document
    • Auto-Evaluate

    • Books & Articles
    • Books
    • Articles

    • What is SCRUM
    • SCRUM Agile Methodology
    • Agile Manifesto & Values
    • SCRUM Guide

    • Scrum Steps
    • Meetings, Impediments and Iterations
    • User stories, Tasks and Habits
    • Delivering Value & Communication
    • ScrumMaster, how it works
    • Mindset, the key to everything
    • Product Owner, how it works
    • Managing Time & Mind
    • Team & the Specialist
    • Albertus’ Dilemma
    • Before SCRUM
    • Team Dynamics
    • Emotions and Thoughts
    • Decision Making and Intuition
    • Beyond SCRUM
    • Balances, atmosphere and tools

    • Resources
    • SCRUM Resources
  • QGIS
    • QGIS basics
    • QGIS: basic concepts

    • QGIS laboratories
    • QGIS Laboratory 1: Introduction to Open Source GIS
  • ArcGIS Pro
    • ArcGIS Pro basics
    • ArcGIS Pro: basic concepts

    • ArcGIS Pro laboratories
    • ArcGIS Pro Laboratory 1: Getting Started
  • Bookmarks
    • Online Resources
    • Online Resources
  • About
    • About me and this site
    • About me
    • About this site
    • About images credit
  • Maps
  • Featured Projects
    • ✈️ Flight tracker
    • 🧑 People tracker
    • 🚗 Renting Car
    • Email
    • GitHub
    • LinkedIn
  1. Python Basics
  2. Python: Tuples
  • Python

  • Python Basics
    • Python: Basic Concepts
    • Python: Numbers
    • Python: Strings
    • Python: Conditionals
    • Python: Lists and Loops
    • Python: Nested Loops
    • Python: Tuples
    • Python: Sets
    • Python: Dictionaries
    • Python: Functions
    • Python: Higher-order Functions
    • Python: Variable Scope
    • Python: Variable Assigment
    • Python: None keyword in Python
    • Python: Object Oriented Programming (OOP)
    • Python: Inheritance and Polymorphism
    • Python: Encapsulation
    • Python: Abstraction
    • Python: Exceptions
    • Python: Cheat-Sheets

On this page

  • 1 Overview
  • 2 Core Properties
    • 2.1 Typical Usage and Behavior
    • 2.2 Differences from Other Collections
  • 3 Tuples
  • 4 Usefulness
  • 5 Tuples in Code
  • 6 Operations
  • 7 Iteration
  • 8 zip
  • 9 Comprehension
  • Edit this page
  • View source
  • Report an issue
  1. Python Basics
  2. Python: Tuples

Python: Tuples

Python Tuples

python
tuples
The file system is organized into a hierarchical structure, starting with the root directory
Author

Isaac Boixaderas

Published

Sunday, June 1, 2025

Modified

Sunday, November 16, 2025

1 Overview

📘 Tuples in Python

A tuple in Python is an immutable ordered collection of elements used to group multiple objects into a single variable or structure. Tuples are similar to lists but are defined using parentheses () instead of square brackets [] and cannot be modified after creation.


2 Core Properties

  • Tuples are defined by listing elements separated by commas, usually within parentheses, although parentheses are optional but recommended for clarity.
  • Elements in a tuple are indexed, allowing access by position, and maintain the order in which they are specified.
  • The immutability of tuples means their content cannot be changed after creation; no addition, deletion, or modification of elements is allowed.
  • Tuples can store elements of mixed types, including other collections, functions, or objects.
  • Duplicate values are allowed within tuples since each element is indexed.

2.1 Typical Usage and Behavior

  • Tuples are preferred when an ordered group of items should remain constant and write-protected through the program.
  • Tuple packing is the process of grouping multiple objects into a tuple, while tuple unpacking refers to the assignment of tuple elements to multiple variables at once.
  • Because tuples are immutable, they are hashable and can be used as dictionary keys, unlike lists.
  • Single-element tuples require a trailing comma to distinguish them from just a parenthesized expression.

2.2 Differences from Other Collections

  • Unlike lists, which are mutable and offer a wider range of operations for changing contents, tuples are static after creation and support only operations that do not modify their contents.
  • Tuples are one of Python’s four fundamental data structures for grouping values, with others being lists (mutable), sets (unordered, unique), and dictionaries (key/value), each suitable for different programming requirements.

Tuples serve as an efficient, predictable means for fixed groups of heterogeneous items and data integrity in Python programs.

3 Tuples

  • Sequence of elements.
  • Very similar to lists.
  • Main difference: Tuples are immutable (size and elements cannot change).
  • Pros: Immutability help prevent accidental modifications.

my_tuple = (1, 4, 2, 3, 2, 2)

# Tuples are immutable
my_tuple[0] = 5
TypeError: ‘tuple’ object does not support item assignment

  • The same rules for indexing and slicing we saw in lists can be applied to tuples.
  • Because of their immutability, tuples lack a lot of the built-in methods that lists have (e.g., append() or sort()).

4 Usefulness

  • Tuples are useful for storing elements that shouldn’t change (i.e., are fixed).
  • Tuples provide safety against accidental modification of data
  • Usage examples:
    • Geographical coordinates: (lat, long).
    • RGB colors: (255, 0, 0).
    • Database rows: (‘Alice’, 30, ‘Engineer’).
    • Immutable configuration of server host and port: (‘localhost’, 8080).
    • 2D/3D points in space: (3, 5) or (1, 2, 3).

5 Tuples in Code

my_tuple = (1, 4, 2, 3, 2, 2)

print(f'The first element of my_tuple is {my_tuple[0]}.')
print(f'The last element of my_tuple is {my_tuple[-1]}.')
print(f'The first two elements of my_tuple are {my_tuple[:2]}.')
print(f'The length of my_tuple is {len(my_tuple)}.')
print(f'The number of 2s in my_tuple is {my_tuple.count(2)}.')
print(f'The sum of my_tuple is {sum(my_tuple)}.')
The first element of my_tuple is 1.
The last element of my_tuple is 2.
The first two elements of my_tuple are (1, 4).
The length of my_tuple is 6.
The number of 2s in my_tuple is 3.
The sum of my_tuple is 14.

  • Multi-type tuples:
my_multi_tuple = ('apple', 1, 2.5, True, [1, 2])

  • Convert lists to tuples and vice versa:
list2tuple = tuple([1, 2, 3])
tuple2list = list((1, 2, 3))

6 Operations

  • Like lists, concatenation with the + operator and repetition with the * operator.
concat_tuple = (1, 2, 3) + (4, 5, 6)
print(concat_tuple)
(1, 2, 3, 4, 5, 6)
rep_tuple = (1, 2, 3) * 3
print(rep_tuple)
(1, 2, 3, 1, 2, 3, 1, 2, 3)
## Comparison
Same as lists:
- Elements compared in order one by one.
- If a difference is found, the comparison gives `False`.
```python
print((1, 2, 3) == (1, 2, 3))
print((1, 2, 3) == (1, 3, 2))
print((1, 2, 3) == (1, 2, 4))
True
False
False

---

## `in`

- Like lists, check if an element is inside a tuple:

```python
print(3 in (1, 3, 2, 1))
True
print(5 in (1, 3, 2, 1))
False

7 Iteration

  • Same as lists:
for element in (1, 2, 3):
    print(element)
1
2
3

8 zip

  • Combines multiple iterables (like lists or tuples) element-wise.
  • Given iterable1 and iterable2, it returns tuples where the first item is from iterable1 and the second is from iterable2.
  • If the input iterables are of uneven length, zip stops creating pairs when the shortest iterable is exhausted.

zipped = zip([1, 2, 3], [4, 5, 6])
print(list(zipped))
[(1, 4), (2, 5), (3, 6)]

for element1, element2 in zip([1, 2, 3], [4, 5, 6]):
    print(element1, element2)
1 4
2 5
3 6

  • Practical example:
students = ["Alice", "Bob", "Charlie", "David"]
grades = [8.5, 9.2, 7.8, 9.0]

for student, grade in zip(students, grades):
    print(f"{student}: {grade}")
Alice: 8.5
Bob: 9.2
Charlie: 7.8
David: 9.0

9 Comprehension

  • Sequence comprehension for creating new tuples:
even_tuple = tuple(i * 2 for i in range(5))
print(even_tuple)
(0, 2, 4, 6, 8)

This code creates a tuple containing even numbers from 0 up to 8 by multiplying each number in the range 0 to 4 (inclusive) by 2, and then prints the tuple.

  • How the Code Works:
  1. range(5) produces the sequence 0, 1, 2, 3, 4.
  2. The generator expression i * 2 for i in range(5) calculates 0, 2, 4, 6, and 8.
  3. The tuple() function collects these values into a tuple: (0, 2, 4, 6, 8).
  4. print(even_tuple) outputs this tuple.
Back to top
Python: Nested Loops
Python: Sets

License: CC0 1.0 Universal

Per aspera, ad astra

  • Edit this page
  • View source
  • Report an issue