Python 3.4.4控制台
为什么从后面检索的字符串的长度会改变?
>>> word = 'abcde'
>>> len(word)//2
2
>>>word[:len(word) // 2:1]
'ab'
>>>word[:len(word) // 2:-1]
'ed'
>>> word = 'abcd'
>>> len(word)//2
2
>>> word[:len(word) // 2:1]
'ab'
>>> word[:len(word) // 2:-1]
'd' <-------- why only one character? should be 'dc'?
答案 0 :(得分:2)
问题在于切片采用以下表示法:list [start_position:end_position:step_length] 因此,在您的代码中word [:len(word)// 2:1]基本上是这样说的:从行的开头(第一个冒号之前不放任何字符)直到位置#2的字符(len(word )// 2),步长为1(处理初始字符串中的每个第一个字符) 然后在word [:len(word)// 2:-1]中执行相同的操作,但是从末尾开始处理字符串(因为将步骤设置为-1),因此您会收到e和d(所有字符从末尾到位置2的字符) 并且当单词等于“ abcd”字符且位置2为“ c”时,从末尾到所述位置的所有字符均为“ d”
如果只想抓住最后两个字符,请使用:print('abcde'[-2:])(按初始顺序)和print('abcde'[:-3:-1])相反。如果您希望所有字符从中间位置到结尾都使用print(word [mid:])
希望如此,对不起,我的英语。