modification python d'une liste de tupples de chaînes [dupliquer]

Nov 16 2020

mysql a sorti une liste de tuples de la forme

a=[("1","2","3"),("4","5","6"),("7","8","9")]

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 prochain morceau de données.

mon intuition était que je pouvais obtenir la matrice souhaitée avec la commande

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

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?

Réponses

2 AnnZen Nov 16 2020 at 17:01

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 de 3.

Au lieu de cela, utilisez une compréhension de liste avec la tranche négative de [:-2]:

a = [("1","2","3"),("4","5","6"),("7","8","9")]
a = [t[-2:] for t in a]
print(a)

Production:

[('2', '3'), ('5', '6'), ('8', '9')]
3 AdamSmith Nov 16 2020 at 16:54

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

c = [b[1:] for b in a]
3 AKX Nov 16 2020 at 16:54

Vous voudrez découper chaque iélément en a:

>>> a = [("1","2","3"),("4","5","6"),("7","8","9")]
>>> [i[1:] for i in a]
[('2', '3'), ('5', '6'), ('8', '9')]
3 WasifHasan Nov 16 2020 at 16:55

Vous pouvez passer comme ça, 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)