【问题标题】:string to array list, is it possible?字符串到数组列表,有可能吗?
【发布时间】:2021-10-30 06:42:28
【问题描述】:

我正在为自己做一个涉及覆盆子 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 个小时在这上面,我想是时候投降了 :) 提前感谢您的回答

【问题讨论】:

  • 欢迎来到 SO! “我为此花了 10 个小时,我认为是时候投降了 :)”——通常,我们要求您分享您的尝试。你被困在哪里了,具体来说?谢谢。此外,您的输出是 9x9 矩阵,但输入字符串是 17x4 矩阵。您能否准确说明 9x9 矩阵是如何从该字符串构建的?

标签: python-3.x micropython raspberry-pi-pico


【解决方案1】:

您可以使用列表推导:

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

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

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

【讨论】:

  • 我已经尝试过这种方法,但我一直有同样的错误......这是我的代码``` a = "10001,01100,100010,10010" b = [list(map(int, word)) for word in a.split(", ")] print(b) ``` 错误是:invalid literal for int() with base 10: ','
  • 您提到的错误是因为某些逗号后面没有空格。空格数是可变的吗?你能编辑你的问题并描述输入格式的规则吗?
  • 查看补充答案以处理可变数量的空格。
  • 抱歉,这是我的错,因为我没有注意到在您的代码中逗号后面是空格,而在我的列表中却没有。非常感谢!
【解决方案2】:

先用一个分割字符分割大字符串,在这种情况下

然后将每个生成的标记映射为一个字符数组

    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)

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

【讨论】:

  • 这不是 Java 问题。
  • python中存在String、trim、split方法,大家可以以此为起点。
  • Java 代码不属于严格 Python 问题的答案,甚至您的 Python 代码也不正确。变量不应该以内置函数命名,否则你会隐藏你以后可能需要的函数。最重要的是,您的 Python 代码完全是错误的——它不会做 OP 想要做的事情。友好的建议:在急于成为问题的第一个答案之前测试你的代码。你最终所做的只是失去代表并看起来很愚蠢。
  • @FranciscoValle - “python 中存在字符串、修剪和拆分方法。”你就像一个棒球运动员,带着球棒和手套出现在足球练习中,声称这是合法的,因为这两种游戏都是玩个球。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 2017-03-31
  • 2013-09-15
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
相关资源
最近更新 更多