将2d整数数组转换为String。例如myArray = [[1,2,3],[3,4,5]]到myArrayL = [[a,b,c],[c,d,e]] 并保留2d数组的形状
其中1 =“a”,2 =“b”,3 =“c”
答案 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']]