1
votes

édition pythonique d'une liste de tupples de chaînes

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?


0 commentaires

4 Réponses :


3
votes

Votre syntaxe est légèrement erronée, mais vous avez choisi la bonne approche.

c = [b[1:] for b in a]


0 commentaires

3
votes

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')]


0 commentaires

3
votes

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)


0 commentaires

2
votes

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)


0 commentaires