【发布时间】:2017-08-02 20:54:03
【问题描述】:
我有一个如下列表。
LED = [[255, 255, 255], [135, 234, 111], [244, 75, 128]]
您可能已经猜到这些是许多 LED 的红/绿/蓝值,我希望它们在这个结构中,因为我可以通过索引来处理代码中的每个成员。所以我可以通过将新值写入列表中的该项目来更改 LED[1] 的值。
但是,在写出它们时,我想要一个列表而不是列表列表。所以我有
For x in range (0, NumLED):
LEDs = LEDs + LED[x]
这会给
LEDs = [255, 255, 255, 135, 234, 111, 244, 75, 128]
有没有比循环遍历更好的方法来做到这一点,对于 3 个 LED 很好,但对于数百个列表,我想每秒更新 LED 条 > 24 次,(代码中还有其他事情发生)因此,将其连接起来并节省几个周期的任何效率都会很棒。
编辑。
我测试了使用建议方法的时机
python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'sum(l, [])'
100 loops, best of 3: 5.79 msec per loop
python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' '[item for sublist in l for item in sublist]'
1000 loops, best of 3: 308 usec per loop
所以看起来[l 中的子列表的项目,子列表中的项目] 快了一点。
感谢大家的建议。
亚伦
在这个问题中有一个很好的解释和时间安排的不同方法
【问题讨论】:
-
个人板球我认为下面链接的答案比这更好。对于初学者来说,它更加完整和可读。
-
这可能是我想要抓住的那个,是的。
标签: python list concatenation