Saya hanya ingin membagi setiap elemen dalam daftar dengan int.
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = myList/myInt
Ini kesalahannya:
TypeError: unsupported operand type(s) for /: 'list' and 'int'
Saya mengerti mengapa saya menerima kesalahan ini. Tetapi saya frustrasi karena saya tidak dapat menemukan solusi.
Juga mencoba:
newList = [ a/b for a, b in (myList,myInt)]
Kesalahan:
ValueError: too many values to unpack
Hasil yang diharapkan:
newList = [1,2,3,4,5,6,7,8,9]
EDIT:
Kode berikut memberi saya hasil yang saya harapkan:
newList = []
for x in myList:
newList.append(x/myInt)
Tetapi apakah ada cara yang lebih mudah / lebih cepat untuk melakukan ini?
Cara Anda mencoba pertama sebenarnya mungkin secara langsung dengan numpy :
Jika Anda melakukan operasi seperti itu dengan daftar panjang dan terutama dalam segala jenis proyek komputasi ilmiah, saya akan sangat menyarankan menggunakan numpy.
sumber
numpy.array([10,20,30,40,50,60,70,80,90], dtype='f')
untuk loat. Kalau tidak, bagi dengan 3 akan memberi Anda hanya 3 sebagai hasilnya alih-alih 3,333 ..numpy.array([10.,20,30,40,50,60,70,80,90])
sumber
map()
mengembalikan objek peta, jadi jika Anda ingin daftar Anda harus secara eksplisit mengatakanlist()
. Jadi dalam kasus ini:newList = list(map(lambda x: x/myInt, myList))
sumber
Versi abstrak dapat berupa:
sumber
sumber