当两个切片操作彼此相邻时,我对所做的事情感到困惑。例如:
>>> s = 'Fuzzy wuzzy was a bear'
>>> L = s.split()
>>> u = L[-1][:2]
'be'
我不知道为什么它会返回这个输出?以及当切片 [][] 彼此相邻时如何解释它。谢谢你。
当两个切片操作彼此相邻时,我对所做的事情感到困惑。例如:
>>> s = 'Fuzzy wuzzy was a bear'
>>> L = s.split()
>>> u = L[-1][:2]
'be'
我不知道为什么它会返回这个输出?以及当切片 [][] 彼此相邻时如何解释它。谢谢你。
首先,你用空格分割字符串,这会产生一个“单词”列表。
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'
>>>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]
which return 时'bear'
,然后执行切片操作[:2]
which returns 'be'
。
他们一个接一个地工作。
L[-1]
给你最后一个项目L
[:2]
给你前两个元素。
因此,L[-1][:2]
为您提供 中最后一项的前两个元素L
。
您的问题已得到解答,现在是最有效的方法:
>>> 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.