0

我喜欢这个列表理解语法的简单性,

waves = [(frequency, amplitude) * wave_count]

但在这种情况下,我不喜欢它将相乘的元组连接成一个长元组。

有没有一种简单的方法可以有效地将元组相乘以成为列表中的单独元组?

谢谢,

胜利者

附言

等一下!我只是想通了,但我想我还是会发布这个问题,因为它让我感到困惑。

这做到了:

waves = [(frequency, amplitude)] * wave_count
4

1 回答 1

3

使用真正的列表理解:

waves = [(frequency, amplitude) for _ in range(wave_count)]

或者只是像你一样乘以列表:

waves = [(frequency, amplitude)] * wave_count

后者在这种情况下是安全的,因为元组是不可变的。

第一个选项为循环的每次迭代创建一个新元组,第二个选项使用wave_count同一元组的引用扩展列表。如果您改用可变的(例如,列表或字典),则可能会导致意外结果,但它确实使用更少的内存。

于 2013-03-14T13:37:28.527 回答