Изменить тип данных при деструктуризации

Возьмите следующий код:

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 применит функцию, переданную в качестве первого аргумента, ко всем значениям в списке или итерации.

Примечание: map ленив. Результат будет получен только во время итерации. Подробнее см. здесь.

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

print(sum(nums)) # 6

Теперь все значения в nums будут 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