1. 程式人生 > >python列表字串互轉和反轉輸出

python列表字串互轉和反轉輸出

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函式的可以應用於各種資料結構,範圍更加廣泛,不過它會呼叫一個新的資料結構來進行操作,不會更改原資料,所以效率會略低一點。