亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

斷開一個字符串并反轉它的每個元素

斷開一個字符串并反轉它的每個元素

嚕嚕噠 2022-10-18 16:50:10
我正在學習數據和算法,這是我遇到的問題問題:編寫一個簡短的遞歸 Python 函數,它接受一個字符串 s 并輸出它的反向。例如,pots&pans 的反面是 snap&stop 。a="pots&pans"b=a.split("&")c=[]c=list(b)def reverse(data,leng,leng2,index,count):    rev=(leng-1)-count    if count<leng/2:        temp=data[index][count]        data[index][count]=data[index][rev]        data[index][rev]=temp    if index==leng2:        print(data[index-1]+"&"+data[index])    return reverse(data,leng,leng2,index+1,count)reverse(c,4,2,0,0)    我在這里遇到錯誤TypeError: 'str' object does not support item assignment我最初的想法是 str 是不可變的。所以最好將它存儲在一個列表中并進行操作。但是,當我嘗試將 str 分配給列表時遇到了一些問題。有什么解決辦法嗎?
查看完整描述

3 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

嘗試這個:


a="pots&pans"

b=a.split("&")


def reverse(word):


    if not word:

        return ""


    return reverse(word[1:]) + word[0]


result = reverse(b[1]) + "&" + reverse(b[0])


print(result)

如果您希望一次遞歸也反轉所有單詞的位置:


a="pots&pans&hello&hi"

b=a.split("&")


def reverse(lis):


    if not lis:

        return ""


    if type(lis) == list and len(lis) == 1:

        return reverse(lis[0])


    if type(lis) == str:

        return reverse(lis[1:]) + lis[0]


    if type(lis) == list:

        return reverse(lis[1:]) + "&" + reverse(lis[0])


print(reverse(b))


查看完整回答
反對 回復 2022-10-18
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

一種遞歸方法是將第一個字符附加到字符串其余部分的反面:


def rev(s): return rev(s[1:])+s[0] if s else ""

輸出:


rev("pots&pans")


'snap&stop'

您也可以在不使用參數解包索引的情況下執行此操作:


def rev(first,*rest): return rev(*rest)+first if rest else first


rev(*"pots&pans")


'snap&stop'


查看完整回答
反對 回復 2022-10-18
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

嘗試這個:


a="pots&pans"


def reverse(a_string):

    `letter_list = list(a_string)`

    `letter_list.reverse()`

    `return(''.join(letter_list))`


print(reverse(a))


查看完整回答
反對 回復 2022-10-18
  • 3 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號