python - 添加元素时出现类型错误
问题描述
我试图从命令行获取输入并将它们转换为命令,然后执行这些命令,但是我得到了一个带有生成器的 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)
解决方案
您有一个将返回整数的生成器对象。这个整数生成器需要转换为 str。
有多种方法可以做到这一点,我不确定你到底需要什么。为了将生成器返回的每个 int 转换为 str,我会使用 map.
str_s2 = map(str, s2)
但是,这会返回另一个生成器。
要将生成器转换为 str,您需要对所需的输出有所了解。如果您希望输出是逗号分隔的数字列表,请使用 join。
str_s2 = ', '.join(map(str, s2))