editar pythonicamente uma lista de tupples de strings [duplicado]
mysql produziu uma lista de tuplas do formulário
a=[("1","2","3"),("4","5","6"),("7","8","9")]
Eu quero uma lista de tuplas do formulário
c=[("2","3"),("5","6"),("8","9")]
ou seja, os dois últimos elementos de cada tupla, então posso colocá-los em um comando my sql executemany e obter a próxima parte dos dados.
minha intuição era que eu poderia obter a matriz desejada com o comando
c=[for b in a: b[1:]]
mas python, não gosta disso. Por que isso não funciona e qual é a maneira mais pítônica de obter a lista desejada de tuplas?
Respostas
Já que você deseja os dois últimos elementos de cada tupla, usar a fatia [1:] (como nas outras respostas) não funcionará quando o número de elementos em cada tupla não for 3.
Em vez disso, use uma compreensão de lista com a fatia negativa de [:-2]:
a = [("1","2","3"),("4","5","6"),("7","8","9")]
a = [t[-2:] for t in a]
print(a)
Resultado:
[('2', '3'), ('5', '6'), ('8', '9')]
Sua sintaxe está um pouco errada, mas optou pela abordagem certa.
c = [b[1:] for b in a]
Você vai querer dividir cada iitem em a:
>>> a = [("1","2","3"),("4","5","6"),("7","8","9")]
>>> [i[1:] for i in a]
[('2', '3'), ('5', '6'), ('8', '9')]
Você pode continuar assim, aqui os loops for vão no final:
a=[(1,2,3),(4,5,6),(7,8,9)]
c=[b[1:] for b in a]
print(c)