Изменить тип данных при деструктуризации - PullRequest
0 голосов
/ 26 мая 2019

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

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]) и т. Д. ... но мне просто интересно, возможно ли что-то подобное сделать в самом выражении присваивания деструктуризации?

Ответы [ 2 ]

1 голос
/ 26 мая 2019

Вы можете использовать встроенную карту , которая преобразует все ваши элементы в int применив к нему функцию типов int

Из документов:

карта (функция, повторяемая, ...)
Возвратите итератор, который применяет функцию к каждому элементу итерируемого, давая результаты.

Затем вы можете использовать обновленный итератор для назначения ваших элементов

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
1 голос
/ 26 мая 2019

Вы можете сделать следующее.Функция map будет применять функцию, переданную в качестве первого аргумента, ко всем значениям в списке или итерируемым.

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

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

print(sum(nums)) # 6

Теперь все значения в числах будут int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...