เปลี่ยนประเภทข้อมูลขณะทำลายโครงสร้าง

ใช้รหัสต่อไปนี้:

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

มีวิธีเปลี่ยนประเภทข้อมูลของสตริงขณะทำลายโครงสร้างหรือไม่? ฉันหวังว่าสิ่งต่อไปนี้จะได้ผล แต่น่าเสียดายที่มันไม่ได้ผล:

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

ฉันรู้ว่าฉันสามารถเปลี่ยนประเภทข้อมูลได้โดยทำ one = int(nums[0]) ฯลฯ ... แต่ฉันแค่สงสัยว่าสิ่งนี้เป็นไปได้หรือไม่ที่จะทำภายในนิพจน์การกำหนดโครงสร้างเอง


person Shnick    schedule 26.05.2019    source แหล่งที่มา


คำตอบ (2)


คุณสามารถทำสิ่งต่อไปนี้ map function จะใช้ฟังก์ชันที่ส่งผ่านเป็นอาร์กิวเมนต์แรกกับค่าทั้งหมดในรายการหรือทำซ้ำได้

หมายเหตุ: map ขี้เกียจ ผลลัพธ์จะได้รับเฉพาะในระหว่างการวนซ้ำเท่านั้น คุณสามารถดูรายละเอียดเพิ่มเติมได้ที่นี่

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

print(sum(nums)) # 6

ตอนนี้ค่าทั้งหมดในตัวเลขจะเป็น int

person Praveenkumar    schedule 26.05.2019

คุณสามารถใช้ map ในตัว ซึ่งจะแปลงองค์ประกอบทั้งหมดของคุณให้เป็น int โดยใช้ฟังก์ชันการพิมพ์ int กับมัน

จากเอกสาร:

map(function, iterable, ...)
ส่งคืนตัววนซ้ำที่ใช้ฟังก์ชันกับทุกรายการของ iterable เพื่อให้ได้ผลลัพธ์

จากนั้นคุณสามารถใช้ตัววนซ้ำที่อัปเดตเพื่อกำหนดองค์ประกอบของคุณ

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

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

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

โปรดทราบว่านี่จะเหมือนกับการทำดังต่อไปนี้ โดยที่เราวนซ้ำถึง nums และพิมพ์แต่ละสตริงเป็น int map เป็นการจดชวเลขสำหรับการดำเนินการนั้น

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