我有一个对象定义如下:
class word(object): #object class
def __init__(self, originalWord=None, azWord=None, wLength=None):
self.originalWord = originalWord
self.azWord = azWord
self.wLength = wLength
我有一个名为results []的列表,其中列表中的每个索引x都包含另一个长度为x的单词对象列表。例如。在结果[3]中,有一个长度为3的对象列表,其中一个对象可能是(dog,gdo,3)。我有一个名为maxL的值,表示列表结果[]的长度。如何通过迭代结果[]及其所有列表来访问(然后打印)我想要的属性?
这是我迄今为止所做的,但我知道语法错误:
for x in range(0,maxL):
for y in results[x]:
print(results[x][y].azWord)
答案 0 :(得分:1)
为什么不像这样迭代列表:
for row in results:
for item in row:
print(item.azWord)
因为在您的示例中results[x][y]
不正确。 y
是一个对象,而不是int
,因此您无法使用它来results
编制索引。我只想使用上面的代码来拉动对象本身。
或使用更接近原始代码的内容
for x in range(0,maxL):
for y in results[x]:
print(y.azWord) # note y is the object itself, not an index
答案 1 :(得分:1)
在第一个循环中:
for x in range(0,maxL):
你正在循环索引。在第二个:
for y in results[x]:
您正在遍历元素。在这种情况下,通过列表的元素。因此,您可以访问以下属性:
print(y.azWord)
# ...
注意:
我建议您关注Python naming conventions。将您的班级命名为Word
。
我还建议您使用更具代表性的名称,例如:
for i in range(0, maxL):
for element in results[i]:
print(element.azWord)
您还可以循环遍历第一个循环中的元素。除非您想要修改元素或者需要使用索引,否则应该这样做:
for words_list in results:
for word in words_list:
print(word.azWord)