首页 > 解决方案 > 添加元素时出现类型错误

问题描述

我试图从命令行获取输入并将它们转换为命令,然后执行这些命令,但是我得到了一个带有生成器的 typeError。有人可以告诉我这是为什么造成的,以及这个生成器对象是什么?

cmd1=''.join('s1.'+info+'('+s2+')')

TypeError:无法将“生成器”对象隐式转换为 str

n=int(input())
    s1=set(int(x) for x in input().split())
    loop_length=int(input())
    for _ in range(loop_length):
        info,r=input().split()
        s2=(int(x) for x in input().split())
        cmd1='s1.'+str(info)+'('+s2+')'
        eval(cmd1)
    print(s1)

标签: pythonpython-3.x

解决方案


您有一个将返回整数的生成器对象。这个整数生成器需要转换为 str。

有多种方法可以做到这一点,我不确定你到底需要什么。为了将生成器返回的每个 int 转换为 str,我会使用 map.

str_s2 = map(str, s2)

但是,这会返回另一个生成器。

要将生成器转换为 str,您需要对所需的输出有所了解。如果您希望输出是逗号分隔的数字列表,请使用 join。

str_s2 = ', '.join(map(str, s2))

推荐阅读