Python:扩展类对象列表

时间:2010-12-15 14:34:39

标签: python class attributes format

这是一个快速的问题。假设我有一个多维的类对象列表,名为table,我需要访问类属性.name

我不想使用嵌套循环,当然要打印它,我需要使用format()

for i in range(3):
    print '{0} - {1} - {2}'.format(*table[i].name)

显然这没用。和(*table[i]).name一样。我需要能够访问.name列表中每个类对象的table[i]。介意你是否让我走向正确的方向?提前谢谢。

3 个答案:

答案 0 :(得分:4)

{arg_name.attribute_name}也有效:

for row in table:
    print(' - '.join('{0.name}'.format(elt) for elt in row))

答案 1 :(得分:1)

  

我不想使用嵌套循环

这太傻了。要迭代多维数组的每个元素,需要来使用嵌套循环。它们可能是隐含的(map或列表理解),但这并不意味着它们不存在!以下内容比map或令人讨厌的format解包更加整洁和清洁。

for row in table:
    for elt in row:
        print <...>

如果您真的想知道如何使用您的方法:

import operator
for row in table:
    print '{0} - {1} - {2}'.format(*map(operator.attrgetter('name'), row))

告诉我,与上面相比,这并不是很混乱和不清楚,更不用说你已经在魔法常数3中进行了硬编码 - 如果你想改成4x4表怎么办?

答案 2 :(得分:1)

像这样,例如:

for row in table:
    print '{0} - {1} - {2}'.format(*[x.name for x in row])
相关问题