我试图从命令行获取输入并将其转换为命令,然后执行那些命令,但是我在生成器中遇到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)
答案 0 :(得分:2)
您有一个生成器对象,该对象将返回int。该int生成器需要转换为str。
有多种方法可以做到这一点,我不确定您到底需要什么。为了将生成器将返回的每个int转换为str,我将使用map。
str_s2 = map(str, s2)
但是,这将返回另一个生成器。
要将生成器转换为str,您需要对所需的输出有一些了解。如果您希望输出是数字的逗号分隔列表,请使用join。
str_s2 = ', '.join(map(str, s2))