Ubah tipe data saat melakukan destrukturisasi

Ambil kode berikut:

nums = ["1", "2", "3"]
one, two, three = nums
print("Sum:", one+two+three)  # >> Sum: 123

Apakah ada cara untuk mengubah tipe data string saat melakukan destrukturisasi? Saya berharap hal seperti berikut ini akan berhasil, namun sayangnya tidak:

nums = ["1", "2", "3"]
int(one), int(two), int(three) = nums
print("Sum:", one+two+three)  # Expected output >> Sum: 6

Saya tahu saya bisa dengan mudah mengubah tipe data dengan melakukan one = int(nums[0]) dll... tapi saya hanya ingin tahu apakah hal seperti ini mungkin dilakukan dalam ekspresi penugasan yang merusak itu sendiri?


person Shnick    schedule 26.05.2019    source sumber


Jawaban (2)


Anda dapat melakukan hal berikut. Fungsi map akan menerapkan fungsi yang diteruskan sebagai argumen pertama ke semua nilai dalam daftar atau iterable.

Catatan: map malas. Hasilnya hanya akan diperoleh pada saat iterasi. Anda dapat menemukan detail selengkapnya di sini.

nums = map(int, ["1", "2", "3"])

print(sum(nums)) # 6

Sekarang semua nilai dalam angka akan menjadi int.

person Praveenkumar    schedule 26.05.2019

Anda dapat menggunakan peta bawaan yang mengonversi semua elemen Anda menjadi int dengan menerapkan fungsi typecasting int padanya

Dari dokumen:

map(function, iterable, ...)
Mengembalikan iterator yang menerapkan fungsi ke setiap item iterable, dan memberikan hasilnya.

Anda kemudian dapat menggunakan iterator yang diperbarui untuk menetapkan elemen Anda

In [234]: nums = ["1", "2", "3"]                                                                                                                                                    

In [235]: one, two, three = map(int,nums)                                                                                                                                           

In [236]: print("Sum:", one+two+three)                                                                                                                                              
Sum: 6

Perhatikan bahwa ini sama dengan melakukan hal berikut, di mana kita melakukan iterasi melalui nums dan mengetikkan setiap string ke int. map adalah singkatan untuk operasi itu.

In [254]: nums = ["1", "2", "3"]                                                                                                                                                    

In [255]: one, two, three = [int(num) for num in nums]                                                                                                                              

In [256]: print("Sum:", one+two+three)                                                                                                                                              
Sum: 6
person Devesh Kumar Singh    schedule 26.05.2019