Очистить переменную, не разрушая ее


У меня есть такой фрагмент кода:

a = "aa"
b = 1
c = { "b":2 }
d = [3,"c"]
e = (4,5)
letters = [a, b, c, d, e]
И я хочу сделать что-то с этим, что опустошит их. Не теряя своего типа.

Что-то вроде этого:

>>EmptyVars(letters)
['',0,{},[],()]

Какой-нибудь намек?

2 7

2 ответа:

Сделайте так:

def EmptyVar(lst):
    return [type(i)() for i in lst]

type() создает объект типа для каждого значения, который при вызове создает "пустое" новое значение.

Демо:

>>> a = "aa"
>>> b = 1
>>> c = { "b":2 }
>>> d = [3,"c"]
>>> e = (4,5)
>>> letters = [a, b, c, d, e]
>>> def EmptyVar(lst):
...     return [type(i)() for i in lst]
... 
>>> EmptyVar(letters)
['', 0, {}, [], ()]

Аналогично, только type(i)() заменено на i.__class__():

a = "aa"
b = 1
c = {"b": 2}
d = [3, "c"]
e = (4, 5)

letters = [a, b, c, d, e]


def empty_var(lst):
    return [i.__class__() for i in lst]


print(empty_var(letters))

['', 0, {}, [], ()]