將2d整數數組轉換爲String。例如myArray = [[1,2,3],[3,4,5]]到myArrayL = [[a,b,c],[c,d,e]] 並保留2d數組的形狀將2d整數數組轉換爲字符串python
其中1 = 「一」,2 = 「b」,3 = 「c」 的
將2d整數數組轉換爲String。例如myArray = [[1,2,3],[3,4,5]]到myArrayL = [[a,b,c],[c,d,e]] 並保留2d數組的形狀將2d整數數組轉換爲字符串python
其中1 = 「一」,2 = 「b」,3 = 「c」 的
有兩個部分此。
首先,根據您的規則,您如何將1
這樣的數字轉換爲像'a'
這樣的字母?其次,你如何將一個函數應用於列表中的所有元素?
對於第一種,寫入方法的一種方法是使用chr
函數。該函數接受一個數字,併爲您提供具有該代碼點的字符的單字符字符串。特別是,chr(65)
是'a'
,chr(66)
是'b'
等。所以,我們可以做chr(n + 64)
。
或者,我們可以使用ord
功能,這是chr
逆,所以不是硬編碼64,並不必記住這比'a'
小於1,我們可以寫1那麼直接比'a'
:
def letter(n):
return chr(n + ord('a') - 1)
當然,這不是唯一的方法。你也可以,例如,使用string.ascii_lowercase[n-1]
。 (請注意,這些解決方案不僅適用於Python 3,其中「代碼點」始終爲Unicode,而且在Python 2中,其中「代碼點」是某些非特定8位編碼中的值,只要預期的編碼具有全部連續訂單,幾乎所有的東西你可能永遠遇到除非你有一些舊的EBCDIC文件躺在附近是真實的小寫字母的)。
對於第二,您可以使用list comprehension。你的例子是平的(1D)名單,所以我們會使用一個平面列表理解:
numbers = [2, 3, 4]
letters = [letter(n) for n in numbers]
如果你有名單的2D名單,只使用一個nested list comprehension:
numbers = [[2, 3], [4, 5]]
letters = [[letter(n) for n in row] for row in numbers]
感謝這幫助 – theBean 2014-12-13 02:22:11
可以相應的字母索引string.ascii_lowercase
,它返回所有小寫字母。
import string
myArray = [[1,2,3],[3,4,5]]
result_array = [[string.ascii_lowercase[element-1] for element in row] for row in myArray]
結果數組:
[['a', 'b', 'c'], ['c', 'd', 'e']]
結果不會是'[[A,B,C],並[c,d,E]]',這將是'[ ['a','b','c'],['c','d','e']]''(除非您碰巧定義了'a,b,c,d,e ='abcde' '或類似的東西......)。另外,我假設你的意思是'3 =「c」',而不是'd'? – abarnert 2014-12-13 02:21:15