Python连接列表

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更快一点.

谢谢大家的建议.

亚伦

在这个问题中,通过解释和计时,可以很好地解释这种方法

在Python中列出列表中的平面列表

And*_*Che 7

我在这里找到了一个非常漂亮的解

在Python中列出列表中的平面列表

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


Dan*_*iel 5

用途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)