首页 > 解决方案 > Python中'+'字符串运算符的解释

问题描述

这是尝试不同列表操作的 Python 代码。我不明白。有人可以cmd+="("+",".join(arg)+")"从下面的代码中解释表达式中的 + 运算符吗?

n = int(raw_input())
l=[]
for _ in range(n):
    s=raw_input().split()
    cmd=s[0]
    arg=s[1:]
    if cmd!='print':
        cmd+="("+",".join(arg)+")"
        eval("l."+cmd)
    else:
        print l

输入:

insert 0 5
insert 1 10
insert 0 6
print

标签: python

解决方案


如果运算符的两边+都是字符串,则运算符进行连接。也就是"foo" + "bar"变成"foobar"

在您显示的代码中,有一大堆不同的连接。首先,将一些括号连接到从返回的字符串的两端str.join(将逗号放在 中的字符串之间args),然后将整个内容连接到cmd字符串的末尾。cmd最后,l.在评估之前将所有内容连接起来。

因此,对于您的示例输入insert 0 5cmd开始为"insert"args开始为列表["0", "5"]。您首先创建"0, 5"from join,然后将括号连接到 get"(0, 5)"然后连接到cmdget上"insert(0, 5)",最后连接到"l.insert(0, 5)".

正如kojiro评论的那样,使用字符串格式而不是连接会使这更清楚。您可以使用多种格式化方法。最适合您的方法可能是该str.format方法(可以追溯到 Python 2.6,尽管您应该真正考虑升级到 Python 3,因为 Python 2 现在已经过了其生命周期结束日期):

s=raw_input().split()
cmd=s[0]
arg=s[1:]
if cmd!='print':
    formatted = "l.{0}({1})".format(cmd, ",".join(rest))
    eval(formatted)
else:
    print l

推荐阅读