Définition

Soit E et F deux ensembles. On appelle 'couple' la donnée conjointe d'un élément de E et d'un élément de F.
Ainsi, si x désigne l'élément de E et y l'élément de F le couple ainsi constitué sera noté: (x,y).
Tous ces couples forment un ensemble appelé 'produit cartésien' de E et F (ou de E par F), et noté E×F.
En France, on remplace souvent le séparateur ',' par ';' (à cause du rôle spécial de la virgule dans l'écriture des nombres décimaux).
Par extension avec ce qui se pratique en géométrie plane on appelle parfois x et y les 'composantes' ou les 'coordonnées' du couple.
Si E et F sont des ensembles finis ayant m et n éléments respectivement, alors E×F possède m×n éléments.
Attention à ne pas confondre les couples avec les paires !
Dans un couple l'ordre des éléments est important. Il est possible, par exemple, que E et F soient sous-ensembles d'un même ensemble G. Dans ce cas (x,y) et (y,x) apparaissent comme deux couples de G×G. Ces couples sont en général distincts, sauf si x=y bien sûr!
(x,y) = (x',y')  ⇔ (x=x') ∧ (y=y')
Par ailleurs, le couple (x,x) a un sens comme élément de E×E. Les répétitions sont donc autorisées.
Voici quelques exemples de produits cartésiens. Appuyez sur le bouton 'Autre exemple' pour les générer.

Exemples

On représente généralement les produits cartésiens au moyen de schémas, tels que ci-dessous.
On dispose les éléments de la source horizontalement , et les éléments du but verticalement.
Le couple (x,y) est matérialisé par l'intersection de la verticale issue de x avec l'horizontale issue de y.

Café Python

Voici un programme qui construit et liste un produit cartésien:

Produits cartésiens généralisés

Plus généralement, si E1, E2, ..., En sont n ensembles, on peut considérer le produit cartésien: E1×E2×... ×En, comme étant l'ensemble des n-uplets, (x1,x2,...,xn) où x1∈E1, x2∈E2, ..., xn∈En.
Voici un exemple de génération immédiate d'un produit cartésien de 3 ensembles au moyen des 'comprehension lists' de Python, qui évite les boucles.
Voici un exemple d'utilisation de fonctions intégrées dans les nouvelles versions de Python.