Python的.join是如何工作的?

时间:2016-06-17 07:12:02

标签: 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_input().split()
    cmd = s[0]
    args = s[1:]
    if cmd !="print":
        cmd += "("+ ",".join(args) +")"
        eval("l."+cmd)
    else:
        print l

3 个答案:

答案 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)