Dev*_*WAH 3 python list concatenation
我有一个列表清单如下.
LED = [[255, 255, 255], [135, 234, 111], [244, 75, 128]]
Run Code Online (Sandbox Code Playgroud)
您可能已经猜到这些是许多LED的红色/绿色/蓝色值,我希望它们在这个结构中,因为我可以通过索引来解决代码中的每个成员.所以我可以简单地通过在列表中为该项目写入新的vaules来改变LED [1]的值.
然而,当谈到写出来时,我想要一个列表而不是列表列表.所以我有
For x in range (0, NumLED):
LEDs = LEDs + LED[x]
Run Code Online (Sandbox Code Playgroud)
哪个会给
LEDs = [255, 255, 255, 135, 234, 111, 244, 75, 128]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点而不是循环,对于3个LED它很好但是对于数百个列表我想要更新LED条>每秒24次(并且代码中还有其他事情)所以任何效率连接这个并保存几个周期会很棒.
编辑.
我测试了使用sugested方法的时间
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
Run Code Online (Sandbox Code Playgroud)
因此,似乎[子列表中项目的子列表中的项目]是qutie更快一点.
谢谢大家的建议.
亚伦
在这个问题中,通过解释和计时,可以很好地解释这种方法
我在这里找到了一个非常漂亮的解
>>> LED = [[255, 255, 255], [135, 234, 111], [244, 75, 128]]
>>> [item for sublist in LED for item in sublist]
[255, 255, 255, 135, 234, 111, 244, 75, 128]
Run Code Online (Sandbox Code Playgroud)
用途sum:
>>> LED = [[255, 255, 255], [135, 234, 111], [244, 75, 128]]
>>> sum(LED, [])
[255, 255, 255, 135, 234, 111, 244, 75, 128]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |