我有汇编类实例列表。列表中的程序集总数可以更改。
ASM_list = [ASM1,ASM2,ASM3...etc]
每个程序集都有一个部件列表(我已经过滤了所有部件都有相同的部件)
ASM1.parts = ['hood','fender','door']
ASM2.parts = ['hood','fender','door']
每个部分都有属性
ASM1.parts[0].color = green
ASM2.parts[0].color = blue
我想打印出每个组件的零件属性。示例输出:
part, ASM1, ASM2, ASM3
hood, green, blue, red
fender, black, red, yellow
door, yellow, green, orange
我在使用zip或map时遇到了麻烦。
我在下面尝试的一个例子。
parts_list = []
for ASM in ASM_list:
parts_list.append([p.color for p in ASM.parts])
print zip(*parts_list)
" Python食谱"和其他几个堆栈溢出帖子显示如何同时迭代多个列表,我遇到的问题是程序集的数量发生了变化,所以我无法写:
for a,b,c in ASM_lists:
a.part.color, b.part.color, c.part.color
谢谢!
答案 0 :(得分:1)
假设您有一个part_names
列表 - 如果您的部件对象具有name
属性以及color
属性,则可以使用以下内容:
part_names = []
for part in ASM_list[0].parts:
part_names.append(part.name)
然后你可以得到你想要的输出:
headers = ["part"]
for i, ASM in enumerate(ASM_list):
headers.append("ASM%d" % (i+1))
print(", ".join(headers))
for i, part_colors in enumerate(zip(*parts_list)):
part_name = part_names[i]
print(part_name + ", " + ", ".join(part_colors))