Python连接列表

2024-04-19 02:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份清单如下。你知道吗

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中代表子列表中的项目]要快一点。你知道吗

谢谢大家的建议。你知道吗

亚伦

有一个很好的解释不同的方法做这个问题的解释和时间安排

Making a flat list out of list of lists in Python


Tags: of项目方法代码inloop列表led
2条回答

我在这里找到了一个很好的解决办法

Making a flat list out of list of lists in 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]

使用sum

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

相关问题 更多 >