字符串到数组列表,这可能吗?

string to array list, is it possible?

我正在为自己做一个项目,其中涉及 raspberry 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 个小时,我想是时候投降了 :) 预先感谢您的回答

首先用一个分割字符分割大字符串,在本例中

然后映射每个生成的标记,将其转换为字符数组

    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);
    }

使用python

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

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

您可以使用列表理解:

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

如果不能保证逗号后面正好跟一个space,那么你只需要用逗号分隔,然后去掉spaces:

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