2013-03-12 53 views
1

我想在下面的代碼中加密一條消息。問題是我的結果出現在列表格式中而不是字符串。我如何將它變成一個字符串?我如何使這個列表成爲python中的字符串?

+0

''.join(your_list)? – 2013-03-12 15:39:44

+0

據我所知,你正在嘗試創建一個交替字符串。你想這樣做:'def stringEncrypter(A):return「」.join(A [0:-1:2] + A [1:-1:2])' – hughdbrown 2013-03-12 20:34:08

回答

2

finalArray顯然是一個列表:

finalArray = [] 

要將其轉換爲字符串,使用join

print ''.join(finalArray) 

但首先,你可能不希望這些嵌套的列表。您應該使用extend,不append

def stringEncrypter(A): 
    length = len(A) 
    finalArray = [] 

    if length%2 == 0: 
      firstArray=[]*(length/2) 
      secondArray=[]*(length/2) 
    else: 
      firstArray=[]*((length+1)/2) 
      secondArray=[]*((length-1)/2) 

    for x in range(0, length-1): 
      if x%2 == 0: 
        firstArray.append(A[x:x+1]) 
        secondArray.append(A[x+1:x+2]) 
    finalArray.extend(firstArray) 
    finalArray.extend(secondArray) 

    print ''.join(finalArray) 
+0

但是,當'finalArray'是列表的列表,因爲它在問題中。 – 2013-03-12 15:49:03

+0

是的,我把'append'改成'extend',忘了提及它。 – 2013-03-12 15:52:04

+0

是的,這工作。延伸是我需要的。加入沒有它沒有工作。謝謝 – user2097674 2013-03-14 11:42:18

2

您需要在扁平化的結果的嵌套列表,然後把它變成一個字符串。這是一種方法:

>>> import itertools 
>>> result = [['I', 'R', 'A', ' ', 'O'], [' ', 'E', 'D', 'Y', 'U']] 
>>> ''.join(itertools.chain(*result)) 
'IRA O EDYU' 
+1

或者您可以將列表傳遞給'itertools.chain.from_iterable' – Acorn 2013-03-12 15:51:41

相關問題