Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python';参加工作?_Python - Fatal编程技术网

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。完全理解:)非常感谢汤姆。完全理解:)“,”只不过是参数的分隔符,我们可以用它来代替,就像/一样。”,“只不过是参数的分隔符,我们可以用它来代替,就像/一样。