猿问

如何在python中“切除”字符串的最后一个和第一个字符?

这基本上就是我想要做的:


myString = '123456789'

slice = myString[-1:1]

*Output = '91'*

但是,Python中的切片似乎不是这样工作的。在我的问题中,字符串表示一个圆形数组,因此我需要能够将其部分切片出来,而不考虑它们在字符串中的位置(即,第一个和最后一个元素彼此“相邻”)。


PIPIONE
浏览 418回答 4
4回答

犯罪嫌疑人X

myString = '123456789's = myString[1:-1]你很接近。它。1:-1如果你正在寻找输出:91s = myString[-1] + s = myString[0]# 91

冉冉说

myString = '123456789'def mySlice(mstring, start, end):&nbsp; &nbsp; if (start<0 or start>end):&nbsp; &nbsp; &nbsp; &nbsp; new_str=mstring[start:len(mstring)]+mstring[0:end]&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; old_str=mstring[start:end]&nbsp; &nbsp; &nbsp; &nbsp; return old_str&nbsp; &nbsp; return new_strslice = mySlice(myString, -1, 1)print(slice) #output is 91

拉莫斯之舞

使用切片对第一个和最后一个字符进行切片,并在之后采用变量 a 和 b 来连接两个变量myString = '123456789'a = myString[-1]b = myString[0]print(a + b)结果91

慕尼黑5688855

如果您希望将字符串表示为圆形数组,并且想要将字符串的某些部分切片出来,则需要先将其转换为其他内容,因为Python字符串是不可变的。Collections.deque将比列表更有效:from collections import dequefoo = deque('123456789')result = str(foo.pop() + foo.popleft()&nbsp; # result then is == '91' and&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # str(''.join(foo)) == '2345678'如果你只想在数组上循环寻找子字符串(即在旋转数组时保持位置稳定,如果这是你的意思),你可以在不改变数组的情况下做这样的事情:foo = deque('123456789')for x in range(len(foo)):&nbsp; &nbsp;#have to use range here (mutation during iteration)&nbsp; &nbsp; print(str(''.join(foo[-1] + foo[0])))&nbsp;&nbsp;&nbsp; &nbsp; foo.rotate(1)&nbsp; &nbsp; &nbsp;这导致91 89 78 67 56 45 23 12
随时随地看视频慕课网APP

相关分类

Python
我要回答