【发布时间】:2013-02-28 05:14:54
【问题描述】:
我正在尝试在以下代码中加密消息。问题是我的结果以列表格式而不是字符串出现。如何把它变成一个字符串?
【问题讨论】:
-
据我所知,您正在尝试创建一个交替字符的字符串。你想要这个:
def stringEncrypter(A): return "".join(A[0:-1:2] + A[1:-1:2])
我正在尝试在以下代码中加密消息。问题是我的结果以列表格式而不是字符串出现。如何把它变成一个字符串?
【问题讨论】:
def stringEncrypter(A): return "".join(A[0:-1:2] + A[1:-1:2])
您需要将结果中的嵌套列表展平,然后将其转换为字符串。这是一种方法:
>>> import itertools
>>> result = [['I', 'R', 'A', ' ', 'O'], [' ', 'E', 'D', 'Y', 'U']]
>>> ''.join(itertools.chain(*result))
'IRA O EDYU'
【讨论】:
itertools.chain.from_iterable
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)
【讨论】:
finalArray 是列表列表时,这将不起作用,因为它在问题中。
append改成了extend,忘了说。