将二维列表中的字符转换为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的主要内容,如果未能解决你的问题,请参考以下文章