When teaching abstract algebra for undergrads, I taught them that there is a permutation group $S(A)$ of automorphisms on any set $A$, and then defined the group $S_n$ to be the group of permutations of the set $\{1,\dots, n\}.$ Later in the semester I regretted it: when writing down cycles (and using cycle notation in general), you want the indices to be modulo some integer: so I wrote cycles of length $n$ as $(x_0, \dots, x_{n-1}),$ which was confusing.
The "pythonic" philosophy holds that the set $\{0, \dots, n-1\}$ is better behaved than the set $\{1,\dots, n\},$ and from a purely ease of notation perspective I think it would be better to define $S_n$ as permutations of $\{0. \dots, n-1\}$. Another consideration that makes this notation potentially better is that the group $D_n$ embeds naturally in $S_n$ as permutations of angles of the $n$-gon, which are indexed $\big\{0\cdot \frac{2\pi}{n},\dots, (n-1)\cdot \frac{2\pi}{n}\big\}$. On the other hand, this notation feels less intuitive and is less standard, not to mention that the book I'm using (Fraleigh, which has multiple chapters on permutation groups) uses $\{1,\dots, n\}.$
I am teaching the same course again and am debating switching. Have people considered this or tried this in their teaching, and what are the main pros/cons?
In my opinion, it is a serious mistake to think that only one of 1-based or 0-based indexing is the best one, even in the programming world, not to say the mathematics world. Each scenario has its own structure that should guide you to the most natural choice of indexing scheme:
If you have an initial state, it is natural to start at index $0$. This includes a sequence $x[0..n]$ where $x[k]$ is the state after $k$ steps of some process.
If you are labelling $n$ objects, it is almost always most convenient to use labels $[1..n]$, unless the labels somehow have more meaning than just labels.
In your case, your underlying set just needs $n$ labels, so $[1..n]$ works just fine. A cycle can indeed be thought of as a length-$n$ sequence modulo rotation, which favours the choice of $(x_0,x_1,\cdots,x_{n-1})$. But I am kind of doubtful that there is any serious inelegance in using $(x_1,x_2,\cdots,x_n)$. If there is some theorem where one indexing seems more natural than the other, simply use that.
There is no such thing as a "more Pythonic indexing scheme". You cannot imagine how many times when coding in Python I cringed because I wanted to say
for i in [0..n]but had to usefor i in range(n+1)just because ... and wanted to sayfor i in [1..n]and had to usefor i in range(n)and have+1s all over.