python列表字串互轉和反轉輸出
阿新 • • 發佈:2019-01-23
1. 字串轉列表
str1 = "12345"
list1 = list(str1)
print list1
str2 = "123 sjhid dhi"
list2 = str2.split() #or list2 = str2.split(" ")
print list2
str3 = "www.google.com"
list3 = str3.split(".")
print list3
輸出為:
['1', '2', '3', '4', '5']
['123', 'sjhid', 'dhi']
['www', 'google', 'com']
2. 列表轉字串
str4 = "".join(list3)
print str4
str5 = ".".join(list3)
print str5
str6 = " ".join(list3)
print str6
輸出為:
wwwgooglecom
www.google.com
www google com
1. 字串轉列表
str1 = "hi hello world"
print(str1.split(" "))
輸出:
['hi', 'hello', 'world']
2. 列表轉字串
l = ["hi","hello","world"]
print(" ".join(l))
輸出:
hi hello world
1、字串轉為列表
str1 = 'a1b2'
ls1 = [str(i) for i in str1]
2、列表轉為字串
ls2 = ['1','a','2','b']
str2 = ''.join(ls2)
Python實現字串反轉的幾種方法
第一種:使用字串切片
result = s[::-1]
第二種:使用列表的reverse方法
l = list(s)
result = "".join(l.reverse())
當然下面也行
l = list(s)
result = "".join(l[::-1])
第三種:使用reduce
result = reduce(lambda x,y:y+x,s)
第四種:使用遞迴函式
def func(s):
if len(s) <1:
return s
return func(s[1:])+s[0]
result = func(s)
第五種:使用棧
def func(s):
l = list(s) #模擬全部入棧
result = ""
while len(l)>0:
result += l.pop() #模擬出棧
return result
result = func(s)
第六種:for迴圈
def func(s):
result = ""
max_index = len(s)-1
for index,value in enumerate(s):
result += s[max_index-index]
return result
result = func(s)
python反轉列表的三種方式
1、內建函式reversed()
li =[1, 2, 3, 4, 5, 6]
a = list(reversed(li))
print (a)
注意:reversed()函式返回的是一個迭代器,而不是一個List,所以需要list函式轉換一下
2、內建函式sorted()
sorted()語法
sorted(iterable[, cmp[, key[, reverse]]])
引數說明:
iterable -- 可迭代物件。
cmp -- 比較的函式,這個具有兩個引數,引數的值都是從可迭代物件中取出,此函式必須遵守的規則為,大於則返回1,小於則返回-1,等於則返回0。
key -- 主要是用來進行比較的元素,只有一個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的一個元素來進行排序。
reverse -- 排序規則,reverse = True 降序 , reverse = False 升序(預設)。
返回值
返回重新排序的列表。
a=[1,2,3,4,5,6,7,8,9]
c=sorted(a, reverse=True)
print (c)
注意:sorted()按降序排列,對於反轉內容不是順序排列的無效果,此處待改善。
3: 使用分片
a=[1,2,3,4,5,6,7,8,9]
d=a[::-1]
print (d)
python列表或字串內容的倒置方法
第一種比較笨的方法就是用遞迴,把列表第一個資料移到最後一個,依次迴圈,直到全部被移到後面,程式碼如下:
def rever(a):
if a =='':
return a
else:
return rever(a[1:])+a[0]
rever("12345")
結果為:
54321
2. 第二種最簡潔,用的是切片法。只需a[::-1]就可以了,
其中第一個: 表示的是切片的區間,如果沒有設定數值,預設是全部區間;
第二個:表示的是切片的步數和方向,預設為切片方向為從前向後,預設步數為1.
上面的-1,代表的就是從後向前,一次往前切一次,也就是剛好倒置列表。
測試程式碼如下:
b = 123456
c = str(b)
c[::-1]
結果為:
'654321'
可以利用這種方法來判斷迴文數,特別簡單。if c[] = c[::-1]:
3. 第三種是python的內建函式,一個是reverse函式,一個是sort函式。
reverse函式。reverse()函式將列表的內容進行了反轉,
藉助這個特性,可以先將字串轉換成列表,利用reverse()函式進行反轉後,再處理成字串。
測試程式碼如下:
b = 123456
c = list(str(b))
c.reverse()
print(c)
輸出為:
['6', '5', '4', '3', '2', '1']
sort函式和sorted函式。其實放在這裡並不合適(因為上面全是關於倒置的,而這個是關於排序的,它會按照一定的順序重組你的資料),不過既然這個函式是用來排序的,也一塊兒說明了。
其形式如下:
sorted(iterable[,cmp[,key[,reverse]]])
list.sort(L, key=None, reverse=False)
其中sorted函式的引數含義如下:
iterable -- 可迭代物件。
cmp -- 比較的函式,這個具有兩個引數,引數的值都是從可迭代物件中取出,此函式必須遵守的規則為,大於則返回1,小於則返回-1,等於則返回0。
key -- 主要是用來進行比較的元素,只有一個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的一個元素來進行排序。
reverse -- 排序規則,reverse = True 降序 , reverse = False 升序(預設)
sort函式的引數含義:L代表要排序,key代表的是用於排序的比較元素,reverse同上面一致。
總體來看,sort只能用於列表的排序,效率也更快,消耗的記憶體較小,而且是直接對列表進行操作,所以會改變列表的原始值。
而sorted函式的可以應用於各種資料結構,範圍更加廣泛,不過它會呼叫一個新的資料結構來進行操作,不會更改原資料,所以效率會略低一點。