Python – NLP – 将iter(iter(树))转换为列表(树)

前端之家收集整理的这篇文章主要介绍了Python – NLP – 将iter(iter(树))转换为列表(树)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个解析器函数,它返回iter(iter(树)).

parsedSentence = parser.raw_parse_sents([sentence],False)  

如何将parsedSentence类型转换为列表(树)并访问该列表的第一个元素.

我已经尝试过list(parser.raw_parse_sents([sentence],False))但是它没有将结果转换为list.

编辑:

s1 = parsedSentence[0]
t1 = Tree.convert(s1)
positions = t1.treepositions()

这里抛出一个错误

'listiterator' object has no attribute 'treepositions'

谢谢.

最佳答案
你在可迭代对象上使用iter的次数没有任何区别,只需通过调用list函数将其转换为list即可.

>>> l =[6,3,5,1,4,2]
>>> list(iter(iter(iter(iter(l)))))
[6,2]

但是如果你只想获得第一项,你不需要使用list函数,你只需在迭代器或next()内置函数上使用next方法(在python 3.X中你可以使用内置函数) next())获取forst项:

>>> iter(iter(l)).next()
6
>>> iter(iter(iter(l))).next()
6
>>> iter(iter(iter(iter(l)))).next()
6

现在关于你的问题,如果你在调用它之后没有得到一个列表,那肯定它不是一个迭代器,它将是你需要根据其__getitem__方法的实现方式得到它的项目的另一个对象类型.

根据您的编辑,t1是一个列表迭代器对象,并且没有属性树位置,您可以循环它的项目,然后调用那些treepositions属性

s1 = parsedSentence[0]
t1 = Tree.convert(s1)
positions = [item.treepositions() for item in t1]

猜你在找的Python相关文章