当两个切片操作紧挨着彼此时,我很困惑。例如:
>>> s = 'Fuzzy wuzzy was a bear'
>>> L = s.split()
>>> u = L[-1][:2]
'be'
我不知道为什么它会返回此输出?以及如何在彼此相邻的切片[] []时解释它。谢谢。
答案 0 :(得分:3)
首先按空格分割字符串,这会产生一个“单词”列表。
s = 'Fuzzy wuzzy was a bear'
L = s.split()
# L == ['Fuzzy', 'wuzzy', 'was', 'a', 'bear']
这些“字词”中的最后一个是[-1]
:
m = L[-1]
# m == 'bear'
在这个单词中,前两个字符由[:2]
:
u = m[:2]
# u == 'be'
答案 1 :(得分:0)
>>>s = 'Fuzzy wuzzy was a bear'
>>>L = s.split()
这里L是一个列表:L = ['Fuzzy', 'wuzzy', 'was', 'a', 'bear']
>>>u = L[-1][:2]
'be'
现在当你执行L[-1][:2]
时,它首先L[-1]
返回'bear'
,然后切片操作[:2]
完成,返回'be'
。
答案 2 :(得分:0)
他们一个接一个地按顺序工作。
L[-1]
为您提供L
[:2]
为您提供前两个元素。
因此,L[-1][:2]
为您提供L
中最后一项的前两个元素。
答案 3 :(得分:0)
您的问题已得到解答,现在是最有效的方法:
>>> s.rpartition(' ')[-1][:2]
'be'
这不需要像没有参数的s.split()
那样分割每一个世界。
>>> help(str.rpartition)
Help on method_descriptor:
rpartition(...)
S.rpartition(sep) -> (head, sep, tail)
Search for the separator sep in S, starting at the end of S, and return
the part before it, the separator itself, and the part after it. If the
separator is not found, return two empty strings and S.