Python字符串连接 - 连接'\n
我刚开始学习Python,遇到了两个关于字符串连接的问题,希望能得到帮助。我知道可以用加号(+)来把字符串连接在一起,像这样。
>>> 'a' + 'b'
'ab'
不过,我最近发现其实不需要用加号也能连接字符串(这是我偶然发现的),这让我产生了第一个疑问——这是怎么可能的呢?
>>> print 'a' + 'b'
ab
另外,我也知道'\n'这个字符串会产生一个“换行”。但是当我把它和第一个问题结合起来用时,出现了以下情况。
>>> print '\n' 'a'*7
a
a
a
a
a
a
a
所以我又产生了第二个疑问——“为什么我会得到7个字母'a'的新行?换句话说,*这个符号不是应该把字母'a'重复7次吗?应该是这样的。
>>> print 'a'*7
aaaaaaa
请帮我弄清楚这是怎么回事。
4 个回答
1
你可能已经发现,依赖相邻字符串的隐式连接有时候会带来问题。而且,用 +
运算符来连接字符串效率也不高。如果只是连接几个小字符串,这点问题可能不明显,但当字符串数量变多时,就会很明显了。
所以,建议你明确地进行连接;可以使用 ''.join()
方法。
print '\n'.join(['a'*7])
2
在Python中,如果你把字符串放在一起而不加逗号,它们会自动连接起来:
>>> print 'a' 'b'
ab
>>> print 'a', 'b'
a b
所以你实际上是在打印 '\na'
这个内容7次。
17
当 "a" "b"
被变成 "ab"
时,这和用 +
把字符串连接起来是不一样的。在阅读 Python 源代码时,紧挨着的字符串会自动合并,这样做是为了方便。
这并不是一种普通的操作,所以它没有遵循你对 +
和 *
的预期运算顺序。
print '\n' 'a'*7
实际上被解释为
print '\na'*7
而不是
print '\n' + 'a'*7