将2d整数数组转换为字符串python

时间:2014-12-13 02:14:35

标签: python

将2d整数数组转换为String。例如myArray = [[1,2,3],[3,4,5]]到myArrayL = [[a,b,c],[c,d,e]]  并保留2d数组的形状

其中1 =“a”,2 =“b”,3 =“c”

2 个答案:

答案 0 :(得分:1)

这有两个部分。

首先,根据您的规则,如何将1之类的数字转换为'a'之类的字母?其次,如何将函数应用于列表的所有元素?


首先,编写它的一种方法是使用chr函数。此函数接受一个数字,并为具有该代码点的字符提供单字符字符串。特别是,chr(65)'a'chr(66)'b'等。因此,我们可以chr(n + 64)

或者我们可以使用ord函数,它是chr的反函数,因此我们可以写入少于1来代替硬编码64并且必须记住小于'a'的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]

答案 1 :(得分:1)

您可以通过索引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']]