Python连接列表

Python连接列表,python,list,concatenation,Python,List,Concatenation,我有一份清单如下 LED = [[255, 255, 255], [135, 234, 111], [244, 75, 128]] 正如您可能已经猜到的,这些是许多LED的红/绿/蓝值,我希望它们在这个结构中,因为我可以通过索引对代码中的每个成员进行寻址。因此,我可以通过向列表中的项目写入新值来更改LED[1]的值 然而,当要写出来的时候,我想要的是一张单子,而不是一张单子。所以我有 For x in range (0, NumLED): LEDs = LEDs + LED[x

我有一份清单如下

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的列表,我想每秒更新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中对应于子列表中的项目]的质量要快一点

谢谢大家的建议

亚伦

有一个很好的解释不同的方法做这与解释和时间在这个问题上

使用
求和

>>> LED = [[255, 255, 255], [135, 234, 111], [244, 75, 128]]
>>> sum(LED, [])
[255, 255, 255, 135, 234, 111, 244, 75, 128]

我在这里找到了一个非常好的解决方案


有趣!标准的方法似乎是列表理解的另一种方法,但这很酷。我使用Аааааааааа答案中的链接对这两种方法进行计时。这两种方法都有效,但第一种方法比使用总和要复杂得多pi@Laserv3:~/APA102$python-mtimeit-s'l=[[1,2,3],[4,5,6],[7],[8,9]*99''和(l,[])100个循环,最佳3:5.79毫秒/循环pi@Laserv3:~/APA102$python-mtimeit-s'l=[[1,2,3],[4,5,6],[7],[8,9]*99''[l中的子列表中的项目对应于子列表中的项目]'1000个循环,每个循环最好使用3:308 usecpi@Laserv3:~/APA102$请注意这是一个O(N^2)操作。在每一次迭代中都会建立一个全新的列表,在考虑大型列表的性能时请记住这一点。这将是缓慢的完美谢谢你的完美:)板球个人我认为下面链接的答案比这个更好。对于初学者来说,这本书更完整,可读性更强。这可能是我想要抓住的,是的。
>>> 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]