mysql a sorti une liste de tuples de la forme
c=[for b in a: b[1:]]
Je veux une liste de tuples du formulaire
c=[("2","3"),("5","6"),("8","9")]
c'est-à-dire les deux derniers éléments de chaque tuple, donc je peux mettre cela dans une commande my sql executemany et obtenir le morceau de données suivant.
mon intuition était que je pouvais obtenir la matrice souhaitée avec la commande
a=[("1","2","3"),("4","5","6"),("7","8","9")]
mais python, n'aime pas ça. Pourquoi cela ne fonctionne-t-il pas, et quel est le moyen le plus pythonique d'obtenir la liste de tuples souhaitée?
4 Réponses :
Votre syntaxe est légèrement erronée, mais vous avez choisi la bonne approche.
c = [b[1:] for b in a]
Vous voudrez découper chaque i
tem en a
:
>>> a = [("1","2","3"),("4","5","6"),("7","8","9")] >>> [i[1:] for i in a] [('2', '3'), ('5', '6'), ('8', '9')]
Vous pouvez passer par là, ici pour les boucles iront à la fin:
a=[(1,2,3),(4,5,6),(7,8,9)] c=[b[1:] for b in a] print(c)
Puisque vous voulez les deux derniers éléments de chaque tuple, l'utilisation de la tranche [1:]
(comme dans les autres réponses) ne fonctionnera pas lorsque le nombre d'éléments dans chaque tuple n'est pas 3.
À la place, utilisez une compréhension de liste avec la tranche négative de [:-2]
:
[('2', '3'), ('5', '6'), ('8', '9')]
Production:
a = [("1","2","3"),("4","5","6"),("7","8","9")] a = [t[-2:] for t in a] print(a)