长期以来这就是它的样子:
class TestClass(object):
def f(num):
"""In general, a complicated function."""
return num
self.a = f(1)
self.b = f(2)
self.c = f(3)
self.d = f(4)
self.e = f(5)
我认为字典方法可以提供帮助,但是如何?
答案 0 :(得分:1)
正如你所说,你最好使用字典。作为一种更加pythonic的方式,你可以使用字典理解。你可以使用enumerate
根据你的项目索引为你的字典创建一系列键。 :
>>> my_dict = {'a{}'.format(i):f(j) for i,j in enumerate([3,4,5,1,2])}
{'a1': 4, 'a0': 3, 'a3': 1, 'a2': 5, 'a4': 2}
要访问每个值,您可以使用简单的索引:
>>> my_dict['a3']
1
此外,如果您想为密钥使用自定义名称,您可以使用zip
函数将变量名称压缩为在dict理解中使用的值:
>>> var_names=['a','b','c','d','e']
>>> values=[1,2,3,4,5]
>>>
>>> my_dict = {i:f(j) for i,j in zip(var_names,values)}
>>> my_dict
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}
答案 1 :(得分:1)
你的方向错误 - 如果你想根据同一个函数分配几个引用,你应该将它们存储在像list
这样的数据结构中,而不是存储在离散的,手动输入的变量中。如果需要,您可以稍后解压缩它们,但您应该从数据结构开始。然后,在此函数的可迭代中map()
每个值变得更容易,然后将其转换为list
。
def f(num):
"""In general, a complicated function."""
return num
my_numbers = list(map(f, range(1, 6)))
这次你的数字是一个整洁的范围所以我只使用了一个range()
对象,但你可以使用任何你喜欢的迭代,例如[1, 2, 3]
或(4, 2, 3)
。