在 Perl 中,我可以使用 'x' 运算符复制字符串:
$str = "x" x 5;
我可以在 Python 中做类似的事情吗?
>>> "blah" * 5
'blahblahblahblahblah'
这是对官方 Python3 文档的参考:
https://docs.python.org/3/library/stdtypes.html#string-methods
字符串实现了所有常见的序列操作......
...这导致我们:
https://docs.python.org/3/library/stdtypes.html#typesseq-common
Operation | Result
s * n or n * s | n shallow copies of s concatenated
例子:
>>> 'a' * 5
'aaaaa'
>>> 5 * 'b'
'bbbbb'
在 Perl ( man perlop
)x
中称为.
在 Python 3中,这也称为.
在 Python 2 中,它可能被称为相同的东西,但我只发现它被称为内置运算符。repetition operator
*
repetition operator
sequence repetition
我认为离题很重要,字符串不是操作员的唯一用途。这里还有一些:
"ab"x5
产生"ababababab"
"ab"*5
也一样。@ones = (1) x @ones
分配每个数组元素并且不会重新分配引用。ones = [1] * len(ones)
看起来像相同的结果,但重新分配了引用。(0)x5
来产生((0),(0),(0),(0),(0))
.[[0]]*5
是 [[0],[0],[0],[0],[0]]
然而,正如上面“几乎”所暗示的那样,Python 中有一个警告(来自文档):
>>> lists = [[]] * 3
>>> lists
[[], [], []]
>>> lists[0].append(3)
>>> lists
[[3], [3], [3]]
同样在 Perl 中,我不确定它在哪里记录,但空列表与运算符的行为有点不同,可能是因为它与False
.
@one=((1))x5;
say(scalar @one); # 5
@arr=(())x5;
say(scalar @arr); # 0