我想创建一个循环,如果满足某个条件,则创建一个对象,然后将其添加到列表中。但是,我不确定如何唯一地命名这些对象,以便以后可以使用/引用它们。例如:
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 ......但我认为动态命名它们会是一个坏主意。
有没有办法在不动态命名的情况下这样做?似乎那是不可能的,但我不确定如何才能实现它。
答案 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)
如果您提供其他背景信息,我会更新答案。