O que é uma sequência?

Sequências são coleções ordenadas embutidas: strings, listas, tuplas e buffers.

Contamos o índice de determinada sequência a partir do zero.

+---+---+---+---+---+---+
| p | y | t | h | o | n |
+---+---+---+---+---+---+
  0   1   2   3   4   5

Outra coisa que precisamos saber sobre o fatiamento de sequências é um pouco óbvio mas vale reforçar:

  • ao fatiar uma string teremos como resultado uma nova string fatiada:

    "python"[:3] retornará "pyt"

  • ao fatiar um lista teremos como resultado uma nova lista com os “pedaços”:

    ["p", "y", "t", "h", "o", "n"][:3] retornará ["p", "y", "t"].

Veja mais exemplos:

p = "python"
p[0] # 'p'
p[1] # 'y'
p[2] # 't'
p[3] # 'h'
p[4] # 'o'
p[5] # 'n'
p = "python"
p[-1] # 'n'
p[-2] # 'o'
p[-3] # 'h'
p[-4] # 't'
p[-5] # 'y'
p[-6] # 'p'

Curiosidade, p[-0] é igual a p[0], ambos resultam em 'p'.

O operador [a:b] possui o comprimento de a (inclusive) até b(exclusive):

p = "python"
p[0:0] # ''
p[0:1] # 'p'
p[1:2] # 'y'
p[2:3] # 't'
p[3:4] # 'h'
p[4:5] # 'o'
p[5:6] # 'n'
p[6:6] # ''

O operador [:b] possui o comprimento até b (exclusive)”:

p = "python"
p[:1] # 'p'
p[:2] # 'py'
p[:3] # 'pyt'
p[:4] # 'pyth'
p[:5] # 'pytho'
p[:6] # 'python'

…equivalente a:

p = "python"
p[0:0] # ''
p[0:1] # 'p'
p[0:2] # 'py'
p[0:3] # 'pyt'
p[0:4] # 'pyth'
p[0:5] # 'pytho'
p[0:6] # 'python'

O operador [a:] possui o comprimento a partir de a(inclusive):

p = "python"
p[:]  # 'python'
p[1:] # 'ython'
p[2:] # 'thon'
p[3:] # 'hon'
p[4:] # 'on'
p[5:] # 'n'
p[6:] # ''

O trecho abaixo é para ilustrar como vários caminhos chegam no mesmo lugar.

p = ["p", "y", "t", "h", "o", "n"]
(p == p[0:6]) # True
(p == p[:6])  # True
(p == p[:])   # True

…ou seja, se aplicarmos um “print” nas formas acima, o resultado será exatamente o mesmo, veja:

print p       // ['p', 'y', 't', 'h', 'o', 'n']
print p[0:6]  // ['p', 'y', 't', 'h', 'o', 'n']
print p[:6]   // ['p', 'y', 't', 'h', 'o', 'n']
print p[:]    // ['p', 'y', 't', 'h', 'o', 'n']

O operador [:] representa o total da lista (ou string).

E há ainda o operador [a:b:n] que representa de n em n itens.

Operações com sequências

Operadores Descrição
s[-i] acesso a um item pelo final
s+z concatenação
s*n n cópias de s concatenadas
i in s teste de inclusão
i not in s teste de inclusão negativo

Atribuição em fatias:

Operadores Descrição
s[2:5] = [4,3,2,1] válida apenas em sequências mutáveis

Funções nativas p/ sequências

Operadores Descrição
len(s) número de elementos
min(s) valores mínimo contido em s
max(s) valores máximo contido em s
sorted(s) devolve uma lista com itens de s em ordem ascendente
reversed(s) retorna um iterador para percorrer os elementos do último ao primeiro

Fonte: