Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Python Melayan `('a')` sebagai String, Bukan Tuple?

Mengapa Python Melayan `('a')` sebagai String, Bukan Tuple?

DDD
Lepaskan: 2024-12-17 11:33:24
asal
460 orang telah melayarinya

Why Does Python Treat `('a')` as a String, Not a Tuple?

Enigma Tuple Singleton dan Penukaran Stringy mereka

Apabila mencipta tupel dengan satu elemen, anda mungkin menjangkakan ia akan mengekalkan tupelnya alam semula jadi. Walau bagaimanapun, dalam Python, tingkah laku pelik berlaku.

Masalahnya:

Pertimbangkan kod berikut:

a = [('a'), ('b'), ('c', 'd')]
Salin selepas log masuk

Anehnya, apabila anda mencetak jenis setiap elemen dalam a, anda mendapat output berikut:

['a', 'b', ('c', 'd')]
<type 'str'>
<type 'str'>
<type 'tuple'>
Salin selepas log masuk

Mengapa dua yang pertama elemen, walaupun disertakan dalam kurungan, berkelakuan sebagai rentetan dan bukannya tupel?

Jawapannya:

Kuncinya terletak pada memahami sintaks Python untuk tupel. Tanda kurung sahaja tidak mencipta tuple dengan satu elemen. Untuk berbuat demikian, anda mesti menambah koma selepas elemen. Perbezaan ini digambarkan di bawah:

type(('a'))  # A string
type(('a',))  # A tuple
Salin selepas log masuk

Untuk membetulkan contoh kod, tambah koma selepas rentetan elemen tunggal:

a = [('a',), ('b',), ('c', 'd')]
Salin selepas log masuk

Sebab:

Menurut dokumentasi Python, tupel kosong dan tupel dengan satu item mempunyai keperluan sintaks yang unik. Tuple kosong dibuat dengan sepasang tanda kurungan kosong, manakala tupel dengan satu item memerlukan nilai diikuti dengan koma.

Pelingkaran:

Jika anda menemui mengekori koma menjadi tidak menyenangkan dari segi estetika, anda boleh membuat tuple dengan satu elemen dengan menghantar senarai ke tuple() fungsi:

x = tuple(['a'])
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Python Melayan `('a')` sebagai String, Bukan Tuple?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan