将二维列表中的字符转换为int值python

Posted

技术标签:

【中文标题】将二维列表中的字符转换为int值python【英文标题】:Converting chars in 2D list to int values python 【发布时间】:2022-01-20 15:50:41 【问题描述】:

我正在尝试转换这个迷宫:

[['#', '#', '#', '#', '#', '#'],
 ['#', 'o', '#', ' ', '#', '#'],
 ['#', ' ', '#', ' ', '#', '#'],
 ['#', ' ', ' ', 'x', '#', '#'],
 ['#', '#', '#', '#', '#', '#']]

到这里:

[[0, 0, 0, 0, 0, 0],
 [0, 1, 0, 1, 0, 0],
 [0, 1, 0, 1, 0, 0],
 [0, 1, 1, 1, 0, 0],
 [0, 0, 0, 0, 0, 0]]

有没有一种快速的方法可以将 char 值转换为 ints?我不知道我需要寻找什么。另外,遍历这个的最佳方法是什么?

【问题讨论】:

你的转换逻辑是什么?请拼写出来并添加到您的问题中。 (使用Edit)。 [[int(x != '#') for x in i] for i in maze] 假设 maze 是您的列表列表 【参考方案1】:

一个简单的班轮:

x = [[int(i != '#') for i in row] for row in Matrix]

i != '#' 检查i 是否为# 并返回True 或False。然后 True 和 False 分别转换为 1 和 0。

【讨论】:

【参考方案2】:
t = [['#', '#', '#', '#', '#', '#'],
 ['#', 'o', '#', ' ', '#', '#'],
 ['#', ' ', '#', ' ', '#', '#'],
 ['#', ' ', ' ', 'x', '#', '#'],
 ['#', '#', '#', '#', '#', '#']]

1 行

x = [[1 if a != "#" else 0 for a in p] for p in t]

结果

print(DataFrame(x))
   0  1  2  3  4  5
0  0  0  0  0  0  0
1  0  1  0  1  0  0
2  0  1  0  1  0  0
3  0  1  1  1  0  0
4  0  0  0  0  0  0

【讨论】:

【参考方案3】:
matrix = [['#', '#', '#', '#', '#', '#'],
 ['#', 'o', '#', ' ', '#', '#'],
 ['#', ' ', '#', ' ', '#', '#'],
 ['#', ' ', ' ', 'x', '#', '#'],
 ['#', '#', '#', '#', '#', '#']]
for i in range(len(matrix)):
    matrix[i] = list(map(lambda x: int(x != '#'), matrix[i]))
print(matrix)

【讨论】:

以上是关于将二维列表中的字符转换为int值python的主要内容,如果未能解决你的问题,请参考以下文章

char *怎样转成int

python中如何将字符串转换为字典

python中怎样将列表转成矩阵

JavaScript中将字符串类型转换为整形的函数

将列表中的所有字符串转换为int

python怎么把列表转换成字符串?