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))

代码解释:

  1. ls = list(nx.algorithms.dag.topological_sort(G)): 将 nx.algorithms.dag.topological_sort(G) 返回的生成器对象转换为列表,并赋值给变量 ls
  2. ls.reverse(): 使用 reverse() 方法将列表 ls 中的元素进行反转,得到最晚开始时间的顺序。

通过以上修改,您就可以解决 'TypeError: 'generator' object is not subscriptable' 错误,并顺利进行后续操作了。

总结:

在处理生成器对象时,要牢记它不能像列表那样直接进行索引或切片操作。需要先使用 list() 函数将其转换为列表,然后再进行相应的操作。

Python中TypeError: 'generator' object is not subscriptable 错误解决方法

原文地址: https://www.cveoy.top/t/topic/ppy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录