python中序列的逆序方式
序列的逆序方式
1. range 函數(shù)
一般 for 循環(huán)中總會(huì)用到 range 函數(shù)來(lái)進(jìn)行順序遍歷,同樣的,range 也能表示序列的逆序。
在 range(start, end, step) 中,start 表示序列的起始索引(默認(rèn)為0),end 表示終止索引,step 表示移動(dòng)步長(zhǎng)(默認(rèn)為1)。由于 range 函數(shù)是“顧頭不顧尾” 的形式,因此實(shí)際上其遍歷的索引終止位置是 end 的前一個(gè)索引。
比如:
list(range(5)) = [0, 1, 2, 3, 4] list(range(1, 5)) = [1, 2, 3, 4] list(range(1, 5, 1)) = [1, 2, 3, 4] list(range(1, 5, 2)) = [1, 3]
同理,逆序遍歷只需將步長(zhǎng) step 設(shè)為負(fù)值即可。
比如:
list(range(5, 1, -1)) = [5, 4, 3, 2] list(range(5, -2, 2)) = [5, 3, 1, -1]
這樣,在 for 循環(huán)中既可以實(shí)現(xiàn)順序遍歷,也可以進(jìn)行逆序遍歷。
2. reversed 函數(shù)
在 python3 中,reversed 函數(shù)也能夠逆轉(zhuǎn)列表。
其實(shí),在 python2.7 中就存在內(nèi)置函數(shù) reverse 可以用來(lái)翻轉(zhuǎn)列表,不過(guò)在 python3 中已經(jīng)刪去該函數(shù)。
相比于 reverse 函數(shù)只能反轉(zhuǎn)列表,reversed 函數(shù)則可以翻轉(zhuǎn)多種序列,包括tuple、list、string、range等類(lèi)型。
由于 reversed 函數(shù)實(shí)際上是一個(gè)類(lèi),因此其直接輸出的是對(duì)應(yīng)序列值反轉(zhuǎn)后的迭代器,需要由對(duì)應(yīng)類(lèi)型的方法獲取反轉(zhuǎn)后的值。
比如:
# 列表反轉(zhuǎn) a = [1, 2, 3, 4, 5] print(reversed(a)) ?# 輸出:<list_reverseiterator object at 0x00000233F1C96588> print(list(reversed(a))) ?# 輸出:[5, 4, 3, 2, 1] # 元組反轉(zhuǎn) a = (1, 2, 3, 4, 5) print(reversed(a)) ?# 輸出:<reversed object at 0x000001FE9B3A6588> print(tuple(reversed(a))) ?# 輸出:(5, 4, 3, 2, 1) # 字符串反轉(zhuǎn) a = '12345' print(reversed(a)) ?# 輸出:<reversed object at 0x000001FAD17E2438> print(str(reversed(a))) ?# 輸出:<reversed object at 0x000001FAD17E2438> print("".join(reversed(a))) ?# 輸出:54321
注意:
- list、tuple、range 類(lèi)型均可相互轉(zhuǎn)換,但str類(lèi)型不同;
- str類(lèi)型反轉(zhuǎn)序列輸出采用"".join(reversed(string)))方法,即將反轉(zhuǎn)序列按順序添加進(jìn)新的字符串序列中。
不過(guò),reversed 函數(shù)只能對(duì)已有序列做完全反轉(zhuǎn),若只是想對(duì)序列其中一部分進(jìn)行反轉(zhuǎn),需要先截取對(duì)應(yīng)序列再反轉(zhuǎn),也可以用 range 函數(shù)遍歷所需部分序列。
3. 其他方法
除了以上兩種方法外,對(duì)于字符串序列,還可以用切片反轉(zhuǎn)方法進(jìn)行反轉(zhuǎn)。
比如:
a = 'hello world' print("".join(reversed(a))) ?# 輸出:dlrow olleh print(a[::-1]) ?# 輸出:dlrow olleh print(a[::-2]) ?# 輸出:drwolh
一個(gè)字符串的逆序函數(shù)
ef nixv(s): sum = " " #定義空字符串 for i in reversed(range(len(s))): #i逆序遍歷 sum = sum + s[i] #使單獨(dú)的字符串組合成整體 return sum #返回字符串 s = input("請(qǐng)輸入一個(gè)字符串:") print(nixv(s)) # 方法二 s='wqrwqr123' print(s[::-1])# 切片 # 方法三 from functools import reduce s='123456' result =reduce(lamada x,y:y+x,s) print(result) # 方法四 def fan(str1): len1=len(str1) for i in range(len1): print(str1[len1-1-i],end='') fan('asdfg')
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
【Python】Python的urllib模塊、urllib2模塊批量進(jìn)行網(wǎng)頁(yè)下載文件
這篇文章主要介紹了Python的urllib模塊、urllib2模塊批量進(jìn)行網(wǎng)頁(yè)下載文件,就是一個(gè)簡(jiǎn)單的從網(wǎng)頁(yè)抓取數(shù)據(jù)、下載文件的小程序,需要的可以了解一下。2016-11-11如何使用python記錄室友的抖音在線(xiàn)時(shí)間
這篇文章主要介紹了如何使用python記錄室友的抖音在線(xiàn)時(shí)間,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Python腳本實(shí)時(shí)處理log文件的方法
Python腳本是用來(lái)對(duì)實(shí)時(shí)文件的內(nèi)容監(jiān)控。接下來(lái)通過(guò)本文給大家介紹Python腳本實(shí)時(shí)處理log文件的方法,需要的朋友參考下吧2016-11-11分析機(jī)器學(xué)習(xí)之決策樹(shù)Python實(shí)現(xiàn)
決策樹(shù)是一種非參數(shù)的有監(jiān)督學(xué)習(xí)方法,它能夠從一系列有特征和標(biāo)簽的數(shù)據(jù)中總結(jié)出決策規(guī)則,并用樹(shù)狀圖的結(jié)構(gòu)來(lái)呈現(xiàn)這些規(guī)則,以解決分類(lèi)和回歸問(wèn)題。決策樹(shù)算法容易理解,適用各種數(shù)據(jù),在解決各種問(wèn)題時(shí)都有良好表現(xiàn)2021-06-06python使用裝飾器和線(xiàn)程限制函數(shù)執(zhí)行時(shí)間的方法
這篇文章主要介紹了python使用裝飾器和線(xiàn)程限制函數(shù)執(zhí)行時(shí)間的方法,主要涉及timelimited函數(shù)的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04Python日期時(shí)間處理庫(kù)dateutil詳解
dateutil 為 Python 標(biāo)準(zhǔn)庫(kù) datetime 提供了強(qiáng)大的擴(kuò)展,這篇文章主要介紹了Python日期時(shí)間處理庫(kù)dateutil,需要的朋友可以參考下2022-09-09