命名循环中创建的对象

时间:2017-08-17 17:09:56

标签: python list object python-object

我想创建一个循环,如果满足某个条件,则创建一个对象,然后将其添加到列表中。但是,我不确定如何唯一地命名这些对象,以便以后可以使用/引用它们。例如:

favNumbers = []

numbers = [6, 21, 5, 22]

class favNumber(object):
    def __init__(self, value):
        self.value = value

for i in numbers:
    if i % 2 == 0:
        unique_name_for_object = favNumber(i)
        favNumbers.append(unique_name_for_object)

我如何给favNumber个对象一个唯一的名字?

我在想某种方式将它们命名为number1,number2,number3 ......但我认为动态命名它们会是一个坏主意。

有没有办法在不动态命名的情况下这样做?似乎那是不可能的,但我不确定如何才能实现它。

2 个答案:

答案 0 :(得分:1)

无需为实例命名。试试这个

favNumbers = []   
numbers = [6, 21, 5, 22]


class favNumber(object):
    def __init__(self, value):
        self.value = value


for i in numbers:
    if i % 2 == 0:
        favNumbers.append( favNumber(i) )

现在,favNumbers是所有已创建实例的列表。如果您想获得每个实例的value,只需输入

即可
for fn in favNumbers:
    print(fn.value)

答案 1 :(得分:0)

如果您只是想生成一个列表,可以使用list comprehension

PeerCertificates

最后一个表达式(favNumbers = [favNumber(i) for i in numbers if n % 2 == 0] )充当过滤器。要访问这些值,您可以使用索引(例如,if n % n == 0作为第一项),或者像使用favNumbers[0]一样遍历列表。

正如有人在评论中指出的那样,numbers{},无法追加。但可以插入给定键的项(也可能是整数dict,尽管当键是连续的非负整数时使用列表通常更有意义。)< / p>

i

也可以使用词典理解来完成:

for i in numbers:
  if n % 2 == 0:
    favNumbers[i] = favNumber(i)

如果您提供其他背景信息,我会更新答案。