-3

我正在为自己做一个项目,其中涉及覆盆子 pico 和 oled 显示器。我正在使用 micropython,但我认为这更像是一个通用的 python 问题。

我需要用图像填充屏幕,最快的方法是让 pico 打开或关闭每个像素。

我非常卡在项目中,因为我知道如何将位图图像转换为 0/1 网格,但我得到的结果是这样的字符串:

a = "11111001010101010, 11111001010101010, 11111001010101010, 11111001010101010"

为了让屏幕正常工作,我需要构建一个这样的矩阵:

b = [
    [ 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [ 0, 1, 1, 0, 0, 0, 1, 1, 0],
    [ 1, 1, 1, 1, 0, 1, 1, 1, 1],
    [ 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [ 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [ 0, 1, 1, 1, 1, 1, 1, 1, 0],
    [ 0, 0, 1, 1, 1, 1, 1, 0, 0],
    [ 0, 0, 0, 1, 1, 1, 0, 0, 0],
    [ 0, 0, 0, 0, 1, 0, 0, 0, 0],
]

每个数组是屏幕上的一条线,黑色像素为 0,白色像素为 1。

将包含用逗号分隔的行的字符串转换为上述矩阵的最快方法是什么?我在这上面花了 10 个小时,我想是时候投降了 :) 提前谢谢你的回答

4

2 回答 2

1

您可以使用列表理解:

[list(map(int, word)) for word in a.split(", ")]

如果不能保证逗号后紧跟一个空格,那么您只需要用逗号分隔,然后去掉空格:

[list(map(int, word.strip())) for word in a.split(",")]
于 2021-08-31T16:49:35.467 回答
-3

首先用拆分字符拆分大字符串,在这种情况下

然后映射每个生成的令牌,将其转换为 char 数组

    String a = "11111001010101010, 11111001010101010, 11111001010101010, 11111001010101010";
    String[] b = a.split(",");
    char[][] result = new char[b.length]["11111001010101010".length];
    int i = 0;
    for (String c : b) {
        result[i++] = c.trim().toCharArray(); 
    }
    for (char[] d : result) {
        System.out.println(d);
    }

使用蟒蛇

str = "111111111110000,111111111110000"
list = str.split (",")
for x in str:
  to_array = [char for char in str]
  print(to_array)

无需打印结果,只需将其添加到数组中,因此您最终会得到字符串中的矩阵

于 2021-08-31T16:46:05.647 回答