天天看點

Python可疊代序列反轉總結

字元串反轉

示例:s = "hello"

方法一:使用切片

def reversed_str(s):
    return s[::-1]           

方法二:使用reversed

# 字元串 -> 反轉疊代器 -> 清單 -> 反轉後的字元串
def reversed_str(s):
    return "".join(list(reversed(s)))   # 實際編碼不要這樣寫,不容易了解           

方法三:使用reverse

def reversed_str(s):
    str_list = list(s)
    # 注意list.reverse()和list.sort()一樣,都是就地操作沒有傳回值
    str_list.reverse()  
    return "".join(str_list)           

方法四:使用reduce

def reversed_str(s):
    from functools import reduce
    # reduce的第一個參數是函數,第二個參數是序列
    return reduce(lambda x, y: y+x, s)           

清單反轉

示例:lst = [1, 2, 3, 4, 5]

方法一:使用切片

def reversed_list(lst):
    return lst[::-1]           

方法二:使用reversed

def reversed_list(lst):
    return list(reversed(lst))           

方法三:使用reverse

def reversed_list(lst):
    lst.reverse()   # 就地反轉
    return lst           

方法四:使用while循環和pop

def reversed_list(lst):
    reversed_lst = []
    while len(lst) > 0:
        reversed_lst.append(lst.pop())
    return reversed_lst           

補充:元組的反轉與清單類似,可以使用方法一和方法二,方法三和方法四需要稍加修改,這裡就不贅述了