将2d整数数组转换为字符串python
将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