mengedit daftar tupples string [duplikat] secara pythonically
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
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')]
Anda memiliki sintaks Anda sedikit salah, tetapi telah mengambil pendekatan yang benar.
c = [b[1:] for b in a]
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')]
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)