Dalam contoh di bawah ini saya akan mengharapkan semua elemen menjadi tupel, mengapa tupel dikonversi menjadi string ketika hanya berisi satu string?
>>> a = [('a'), ('b'), ('c', 'd')]
>>> a
['a', 'b', ('c', 'd')]
>>>
>>> for elem in a:
... print type(elem)
...
<type 'str'>
<type 'str'>
<type 'tuple'>
('a')
baru saja mengevaluasi ke'a'
,
:a = 1, 2, 3; print a
()
, yang hanya terdiri dari sepasang tanda kurung.False
- hampir semua tupel kosong bagus untuk (jika Anda mengerti maksud saya).Jawaban:
Karena dua elemen pertama itu bukanlah tupel; mereka hanya string. Tanda kurung tidak secara otomatis menjadikannya tupel. Anda harus menambahkan koma setelah string untuk menunjukkan pada python bahwa itu adalah tupel.
Untuk memperbaiki kode contoh Anda, tambahkan koma di sini:
Dari Dokumen Python :
Jika Anda benar-benar membenci sintaksis tanda koma, solusinya adalah dengan meneruskan a
list
ketuple()
fungsi:sumber
tuple
menerima iterable , yaitu string (iterasi atas karakter). Jika Anda bersikeras tidak menggunakan trailing koma, kemudian membuat daftar menengah:tuple(['abc'])
.Dua contoh pertama Anda bukanlah tupel, melainkan string. Tupel item tunggal membutuhkan tanda koma, seperti pada:
sumber
('a')
bukan tupel, melainkan hanya sebuah string.Anda perlu menambahkan koma tambahan di akhir untuk menjadikannya
python
sebagaituple
: -sumber