modificare in modo python un elenco di gruppi di stringhe [duplicato]

Nov 16 2020

mysql ha prodotto un elenco di tuple del modulo

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

Voglio un elenco di tuple del modulo

c=[("2","3"),("5","6"),("8","9")]

cioè gli ultimi due elementi di ogni tupla, così posso metterli in un mio comando sql executemany e ottenere il prossimo pezzo di dati.

la mia intuizione era che avrei potuto ottenere la matrice desiderata con il comando

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

ma python, non gli piace. Perché non funziona, e qual è il modo più pitonico per ottenere l'elenco desiderato di tuple?

Risposte

2 AnnZen Nov 16 2020 at 17:01

Dato che vuoi gli ultimi due elementi di ogni tupla, l'uso della slice [1:] (come nelle altre risposte) non funzionerà quando il numero di elementi in ogni tupla non è 3.

Utilizza invece una comprensione dell'elenco con la fetta negativa di [:-2]:

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

Produzione:

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

Hai la tua sintassi leggermente sbagliata, ma hai adottato l'approccio giusto.

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

Ti consigliamo di suddividere ogni ielemento in 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

Puoi passare in questo modo, qui i loop andranno alla fine:

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