Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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_String - Fatal编程技术网

python字符串语法错误+;=操作人员

python字符串语法错误+;=操作人员,python,string,Python,String,我在Python 2.7.3中遇到一个语法错误,如下所示: [s += 'Orig' for s in strs] File "<stdin>", line 1 [s += 'Orig' for s in strs] ^ SyntaxError: invalid syntax 然后它就起作用了: ['aOrig', 'bOrig', 'cOrig', 'dOrig'] 这背后的原因是什么?是因为列表中的s是不可变的吗?但它应该是一个临时对象,以后会被丢

我在Python 2.7.3中遇到一个语法错误,如下所示:

[s += 'Orig' for s in strs]
  File "<stdin>", line 1
    [s += 'Orig' for s in strs]
        ^
SyntaxError: invalid syntax
然后它就起作用了:

['aOrig', 'bOrig', 'cOrig', 'dOrig']
这背后的原因是什么?是因为列表中的s是不可变的吗?但它应该是一个临时对象,以后会被丢弃,所以为什么不呢

还有,做我想做的事情最有效的方法是什么?我看了另一个链接:并试图使用join,但join并不能满足我的需要;它将字符串列表连接到单个字符串中,而我希望将字符串附加到字符串列表中。

Python中的赋值(包括
+=
)是语句,而不是表达式。只能在列表中使用表达式


你的
+
示例没有达到你希望它达到的目的是什么?

你不能将它用作表达式。只有通过语句中的赋值才能使用(+=)符号。

您不能这样做
s+=“Orig”
s=s+Orig
的简写,这是一个赋值。为了清楚起见,python不允许将赋值语句放在其他语句中。有关更多详细信息,请参阅Python常见问题解答中的。

好的,您可以这样做

strs = [s+'Orig' for s in strs]


我发现列表理解(第一个)更容易阅读。

在那里这样做没有意义。Python需要在列表中输入一个值,赋值不返回值。列表理解旨在创建一个新列表,而不是修改现有列表的简写。如果您试图对列表进行就地修改,这是错误的做法。@SeanMcSomething:我非常喜欢LC的语法,我希望他们这样做!谢谢来自C++背景的链接解释了所有这些。
strs = [s+'Orig' for s in strs]
strs = map(lambda s: s+'Orig', strs)