为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2022-08-16 18:28:40
这基本上就是我想要做的:myString = '123456789'slice = myString[-1:1]*Output = '91'*但是,Python中的切片似乎不是这样工作的。在我的问题中,字符串表示一个圆形数组,因此我需要能够将其部分切片出来,而不考虑它们在字符串中的位置(即,第一个和最后一个元素彼此“相邻”)。
查看完整描述

4 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

myString = '123456789'

s = myString[1:-1]

你很接近。它。1:-1


如果你正在寻找输出:91


s = myString[-1] + s = myString[0]

# 91


查看完整回答
反对 回复 2022-08-16
?
冉冉说

TA贡献1877条经验 获得超1个赞

myString = '123456789'


def mySlice(mstring, start, end):

    if (start<0 or start>end):

        new_str=mstring[start:len(mstring)]+mstring[0:end]

    else:

        old_str=mstring[start:end]

        return old_str

    return new_str


slice = mySlice(myString, -1, 1)

print(slice) #output is 91


查看完整回答
反对 回复 2022-08-16
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

使用切片对第一个和最后一个字符进行切片,并在之后采用变量 a 和 b 来连接两个变量


myString = '123456789'

a = myString[-1]

b = myString[0]

print(a + b)

结果


91


查看完整回答
反对 回复 2022-08-16
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

如果您希望将字符串表示为圆形数组,并且想要将字符串的某些部分切片出来,则需要先将其转换为其他内容,因为Python字符串是不可变的。Collections.deque将比列表更有效:


from collections import deque

foo = deque('123456789')

result = str(foo.pop() + foo.popleft()  # result then is == '91' and 

                                        # str(''.join(foo)) == '2345678'

如果你只想在数组上循环寻找子字符串(即在旋转数组时保持位置稳定,如果这是你的意思),你可以在不改变数组的情况下做这样的事情:


foo = deque('123456789')

for x in range(len(foo)):   #have to use range here (mutation during iteration)

    print(str(''.join(foo[-1] + foo[0])))  

    foo.rotate(1)     

这导致91 89 78 67 56 45 23 12


查看完整回答
反对 回复 2022-08-16
  • 4 回答
  • 0 关注
  • 416 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信