【问题标题】:Converting chars in 2D list to int values python将二维列表中的字符转换为int值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 是您的列表列表

标签: python list matrix type-conversion


【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 2017-12-06
        • 2023-03-27
        • 2022-11-20
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-08
        • 2019-09-17
        相关资源
        最近更新 更多