Python中TypeError: 'generator' object is not subscriptable 错误解决方法
Python中TypeError: 'generator' object is not subscriptable 错误解决方法
在使用 NetworkX 库进行拓扑排序时,您可能会遇到以下错误信息:
Traceback (most recent call last):
File 'E:\三江\python\作业\pythonProject\1.py', line 34, in <module>
ls = nx.algorithms.dag.topological_sort(G)[::-1] # 最晚开始时间
TypeError: 'generator' object is not subscriptable
这个错误是因为 nx.algorithms.dag.topological_sort(G) 函数返回的是一个生成器对象,而不是列表。生成器对象无法像列表那样通过索引进行切片操作。
解决方法:
要解决这个问题,需要将生成器对象转换为列表,然后再进行切片操作。可以使用 list() 函数将生成器对象转换为列表,并使用 reversed() 函数进行反转。
ls = list(nx.algorithms.dag.topological_sort(G))
ls.reverse() # 或者使用 ls = list(reversed(ls))
代码解释:
ls = list(nx.algorithms.dag.topological_sort(G)): 将nx.algorithms.dag.topological_sort(G)返回的生成器对象转换为列表,并赋值给变量ls。ls.reverse(): 使用reverse()方法将列表ls中的元素进行反转,得到最晚开始时间的顺序。
通过以上修改,您就可以解决 'TypeError: 'generator' object is not subscriptable' 错误,并顺利进行后续操作了。
总结:
在处理生成器对象时,要牢记它不能像列表那样直接进行索引或切片操作。需要先使用 list() 函数将其转换为列表,然后再进行相应的操作。
原文地址: https://www.cveoy.top/t/topic/ppy 著作权归作者所有。请勿转载和采集!