Python';参加工作?
有人建议我使用下面的解决方案,但我不理解下面代码的这一行Python';参加工作?,python,Python,有人建议我使用下面的解决方案,但我不理解下面代码的这一行cmd+=”(“+”,“.join(args)+”)。 我为此感到沮丧。有人能帮我吗 问题是阅读这样的输入 12 insert 0 5 insert 1 10 insert 0 6 print remove 6 append 9 append 1 sort print pop reverse print 我的Python语言艺术 n = input() l = [] for _ in range(n): s = raw_inp
cmd+=”(“+”,“.join(args)+”)
。
我为此感到沮丧。有人能帮我吗
问题是阅读这样的输入
12
insert 0 5
insert 1 10
insert 0 6
print
remove 6
append 9
append 1
sort
print
pop
reverse
print
我的Python语言艺术
n = input()
l = []
for _ in range(n):
s = raw_input().split()
cmd = s[0]
args = s[1:]
if cmd !="print":
cmd += "("+ ",".join(args) +")"
eval("l."+cmd)
else:
print l
考虑以下输入行:
insert 1 10
因此s
是列表[“插入”、“1”、“10”]
。请注意,列表元素都是字符串
所以cmd
是“插入”
,args
是[“1”,“10”]
这是你不明白的部分。首先,,“.join(args)
只创建一个由arg
元素组成的字符串,用逗号分隔:“1,10”
然后用括号括起来:“(1,10)”
。最后,它被附加到cmd
中,从而产生字符串“insert(1,10)”
然后它将“l.”
加在前面,生成字符串“l.insert(1,10)”
。然后将其传递到eval
因此它调用列表
l
上的insert
方法,在1
位置插入值10
。也就是说,它正在执行l.insert(1,10)
考虑以下输入行:
insert 1 10
因此s
是列表[“插入”、“1”、“10”]
。请注意,列表元素都是字符串
所以cmd
是“插入”
,args
是[“1”,“10”]
这是你不明白的部分。首先,,“.join(args)
只创建一个由arg
元素组成的字符串,用逗号分隔:“1,10”
然后用括号括起来:“(1,10)”
。最后,它被附加到cmd
中,从而产生字符串“insert(1,10)”
然后它将“l.”
加在前面,生成字符串“l.insert(1,10)”
。然后将其传递到eval
因此它调用列表
l
上的insert
方法,在1
位置插入值10
。也就是说,它正在执行l.insert(1,10)
你的问题是下面这行是什么意思:
cmd += "("+ ",".join(args) +")"
cmd
是一个变量(带有字符串)
+=
是将右侧添加到左侧的运算符
”(“
是包含左括号的字符串
+
是一个运算符,它将自身的左右两边相加
“,”.join(args)
这会将列表args
放入一个用逗号分隔的字符串中。例如:
args =['bob','sue','tom'], then:
",".join(args)
> bob,sue,tom
同样,+
是一个操作符,它将自身的左右两边相加
)
是包含右括号的字符串
因此,如果args是['bob',sue','tom],cmd是names,那么此行的输出将是:
cmd = "names"
args =["bob","sue","tom"]
cmd += "("+ ",".join(args) +")"
print cmd
> names(bob,sue,tom)
你的问题是下面这句话的意思是什么:
cmd += "("+ ",".join(args) +")"
cmd
是一个变量(带有字符串)
+=
是将右侧添加到左侧的运算符
”(“
是包含左括号的字符串
+
是一个运算符,它将自身的左右两边相加
“,”.join(args)
这会将列表args
放入一个用逗号分隔的字符串中。例如:
args =['bob','sue','tom'], then:
",".join(args)
> bob,sue,tom
同样,+
是一个操作符,它将自身的左右两边相加
)
是包含右括号的字符串
因此,如果args是['bob',sue','tom],cmd是names,那么此行的输出将是:
cmd = "names"
args =["bob","sue","tom"]
cmd += "("+ ",".join(args) +")"
print cmd
> names(bob,sue,tom)
这一行用于确保命令的语法正确,并且在调用命令时使用括号和逗号!我在下面的代码中写得更清楚:
cmd = 'insert'
arg1 = '1'
arg2 = '3'
arg3 = '10'
cmd = cmd + "(" + ",".join((arg1, arg2, arg3)) + ")"
print cmd
输出:
insert(1,3,10)
这一行用于确保命令的语法正确,并且在调用命令时使用括号和逗号!我在下面的代码中写得更清楚:
cmd = 'insert'
arg1 = '1'
arg2 = '3'
arg3 = '10'
cmd = cmd + "(" + ",".join((arg1, arg2, arg3)) + ")"
print cmd
输出:
insert(1,3,10)
你明白“
”,“.join(args)
本身吗…?你想归档什么?不,我不明白。decezeRahul我只想理解这行cmd+=”(“+”,“.join(args)+”)”eval()
是一个糟糕的解决方案。看见例如,在这种特殊情况下,您可以使用getattr(l,cmd)(*(int(arg)表示args中的arg))
。即使是不受控制的getattr也可能是邪恶的。你明白吗?“.join(args)本身…?你想归档什么?不,我不明白。decezeRahul我只想理解这行cmd+=”(“+”,“.join(args)+”eval()
是一个可怕的解决方案。看见例如,在这种特殊情况下,您可以使用getattr(l,cmd)(*(int(arg)表示args中的arg))
。即使是不受控制的getattr也可能是邪恶的。非常感谢Tom。完全理解:)非常感谢汤姆。完全理解:)“,”只不过是参数的分隔符,我们可以用它来代替,就像/一样。”,“只不过是参数的分隔符,我们可以用它来代替,就像/一样。