Saya ingin tahu apakah ada cara yang lebih baik untuk mencetak semua objek dalam daftar Python daripada ini:
myList = [Person("Foo"), Person("Bar")]
print("\n".join(map(str, myList)))
Foo
Bar
Saya membaca cara ini tidak terlalu baik:
myList = [Person("Foo"), Person("Bar")]
for p in myList:
print(p)
Bukankah ada sesuatu seperti:
print(p) for p in myList
Jika tidak, pertanyaan saya adalah ... mengapa? Jika kita dapat melakukan hal-hal semacam ini dengan daftar yang lengkap, mengapa tidak sebagai pernyataan sederhana di luar daftar?
python
list
printing
list-comprehension
Guillaume Voiron
sumber
sumber
for p in myList
itu "tidak terlalu bagus"?Jawaban:
Dengan asumsi Anda menggunakan Python 3.x:
Anda bisa mendapatkan perilaku yang sama pada Python 2.x menggunakan
from __future__ import print_function
, seperti yang dicatat oleh mgilson di komentar.Dengan pernyataan cetak pada Python 2.x Anda akan memerlukan beberapa jenis iterasi, mengenai pertanyaan Anda tentang
print(p) for p in myList
tidak berfungsi, Anda bisa menggunakan yang berikut ini yang melakukan hal yang sama dan masih satu baris:Untuk solusi yang menggunakan
'\n'.join()
, saya lebih suka pemahaman daftar dan generator,map()
jadi saya mungkin akan menggunakan yang berikut:sumber
from __future__ import print_function
menggunakan python2.6 dan yang lebih baru.map()
dan generator? Pencipta Python juga lebih menyukai pemahaman dan generator daripadamap()
.[F(x) for x in S]
adalah lebih jelas daripadamap(F, S)
. Performa tidak dibahas di sana, tetapi saya berharap perbedaan kecepatan dapat diabaikan. Pokoknya saya baru bingung downvote nya, maaf saya anggap itu kamu!Saya menggunakan ini sepanjang waktu :
sumber
format()
, gantistr(x)
dengan string format:print " ".join(["{:02d}".format(x) for x in l])
[print(a) for a in list]
akan memberikan banyak tipe None di bagian akhir meskipun mencetak semua itemsumber
Untuk Python 2. *:
Jika Anda membebani fungsi __str __ () untuk kelas Person Anda, Anda dapat menghilangkan bagian tersebut dengan map (str, ...). Cara lain untuk ini adalah membuat fungsi, seperti yang Anda tulis:
Ada di Python 3. * argumen sep untuk fungsi print (). Lihat dokumentasi.
sumber
Memperluas jawaban @ lucasg (terinspirasi oleh komentar yang diterimanya):
Untuk mendapatkan keluaran daftar yang diformat , Anda dapat melakukan sesuatu di sepanjang baris ini:
Sekarang
", "
menyediakan pemisah (hanya antara item, bukan di akhir) dan string pemformatan yang'02d'
digabungkan dengan%x
memberikan string yang diformat untuk setiap itemx
- dalam hal ini, diformat sebagai bilangan bulat dengan dua digit, kiri diisi dengan nol.sumber
Untuk menampilkan setiap konten, saya menggunakan:
Contoh penggunaan dalam suatu fungsi:
Semoga saya membantu.
sumber
Saya rasa ini yang paling nyaman jika Anda hanya ingin melihat konten di daftar:
Sederhana, mudah dibaca dan dapat digunakan bersama dengan format string.
sumber
Pertanyaan OP adalah: apakah ada hal seperti berikut, jika tidak maka mengapa
jawabannya adalah, itu memang ada yaitu:
Pada dasarnya, gunakan
[]
untuk pemahaman daftar dan hapusprint
untuk menghindari pencetakanNone
. Untuk melihat mengapaprint
cetakanNone
lihat inisumber
Saya baru-baru ini membuat pembuat kata sandi dan meskipun saya SANGAT BARU mengenal python, saya membuat ini sebagai cara untuk menampilkan semua item dalam daftar (dengan pengeditan kecil agar sesuai dengan kebutuhan Anda ...
Seperti yang saya katakan, saya SANGAT BARU untuk Python dan saya yakin ini cara yang kikuk bagi seorang ahli, tapi saya hanya di sini untuk contoh lain
sumber
Dengan asumsi Anda baik-baik saja dengan daftar Anda yang dicetak [1,2,3], maka cara mudah dengan Python3 adalah:
Menjalankan ini menghasilkan keluaran berikut:
sumber