我被建议使用以下解决方案,但我不理解以下代码的这一行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
答案 0 :(得分:2)
此行用于确保您的命令采用正确的语法,并在调用时使用括号和逗号!我在下面的代码中写得更清楚:
cmd = 'insert'
arg1 = '1'
arg2 = '3'
arg3 = '10'
cmd = cmd + "(" + ",".join((arg1, arg2, arg3)) + ")"
print cmd
输出:
insert(1,3,10)
答案 1 :(得分:1)
考虑以下输入行:
s
因此["insert", "1", "10"]
是列表cmd
。请注意,列表元素都是字符串。
因此"insert"
为args
而["1", "10"]
为",".join(args)
。
现在,这是你不了解的部分。首先,arg
只创建一个由"1,10"
元素组成的字符串,以逗号分隔:"(1,10)"
。
然后用括号括起来:cmd
。最后,它会附加到"insert(1,10)"
,从而生成字符串"l."
。
然后将"l.insert(1,10)"
添加到此前面,生成字符串eval
。然后将其传递给insert
。
因此,它会在列表l
上调用10
方法,在1
位置插入值l.insert(1,10)
。即,它正在执行.enablePlugins(JavaAppPackaging)
。
答案 2 :(得分:1)
您的问题是以下行的含义:
cmd += "("+ ",".join(args) +")"
cmd
是一个变量(带字符串)。
+=
是一个操作员,它将右侧添加到左侧。
"("
是一个包含左侧parens的字符串。
+
是一个添加自身左右的运算符。
",".join(args)
这会将列表args
放入以逗号分隔的字符串中。例如:
args =['bob','sue','tom'], then:
",".join(args)
> bob,sue,tom
再次,+
是一个添加自身左右的运算符。
)
是一个包含右parens的字符串。
因此,如果args是[' bob' sue' tom,tomt],而cmd是名称,那么这一行的输出将是:
cmd = "names"
args =["bob","sue","tom"]
cmd += "("+ ",".join(args) +")"
print cmd
> names(bob,sue,tom)