mengedit daftar tupples string [duplikat] secara pythonically

Nov 16 2020

mysql memiliki keluaran berupa daftar tupel

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

Saya ingin daftar tupel formulir

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

yaitu dua elemen terakhir dari setiap tupel, jadi saya dapat memasukkannya ke dalam perintah sql executemany saya dan mendapatkan bagian data berikutnya.

intuisi saya adalah saya bisa mendapatkan matriks yang diinginkan dengan perintah

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

tapi python, tidak suka itu. Mengapa itu tidak berhasil, dan apa cara paling pythonic untuk mendapatkan daftar tupel yang diinginkan?

Jawaban

2 AnnZen Nov 16 2020 at 17:01

Karena, Anda menginginkan dua elemen terakhir dari setiap tupel, menggunakan slice [1:] (seperti di jawaban lain) tidak akan berfungsi jika jumlah elemen di setiap tupel bukan 3.

Sebaliknya, gunakan pemahaman daftar dengan potongan negatif dari [:-2]:

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

Keluaran:

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

Anda memiliki sintaks Anda sedikit salah, tetapi telah mengambil pendekatan yang benar.

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

Anda ingin mengiris setiap item di 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

Anda dapat melalui seperti ini, di sini untuk loop akan berakhir:

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