我目前面临一个奇怪的字符串切片问题。我无法理解下面代码的一部分。
s = 'azcbobobegghakl'
curString = s[0]
longest = s[0]
for i in range(1, len(s)):
if s[i] >= curString[-1]:
curString += s[i]
if len(curString) > len(longest):
longest = curString
else:
curString = s[i]
print 'Longest substring in alphabetical order is:', longest
特别是curString[-1]
所在的部分。我试图确定该代码中curString[-1]
的重点。
我做了这个测试:
>>> s = 'azcbobobegghakl'
>>> curString = s[0]
>>> curString
'a'
>>> curString[-1]
'a'
当使用相同的字符串定义一个新变量并尝试相同的[-1]切片时,它返回字符串的第一个字母,而我希望它返回最后一个(由于[-1]但是它确实不是。为什么?
答案 0 :(得分:0)
此声明:
>>> s = 'azcbobobegghakl'
>>> curString = s[0]
会将"a"
的值分配给curString
。 s[0]
只是字符串s
的第一个元素,它不是字符串s
的范围或切片。
答案 1 :(得分:0)
问题是(我认为)你切错了列表
>>> s = 'azcbobobegghakl'
>>> curString = s[0]
>>> print(curString)
a
这里 curString 等于 "a"
所以 curString[-1] = "a" 因为 curString 的最后一个字符是 "a"
如果你想要'azcbobobegghakl'的最后一个字符,请执行:
>>> curString = s[-1] # This is "l"
>>> print(curString)
l