【问题标题】:Python 3.2: Can I multiply a tuple in a list without concatenating the individual tuples into one tuple?Python 3.2:我可以将列表中的元组相乘而不将单个元组连接成一个元组吗?
【发布时间】:2013-03-14 13:35:36
【问题描述】:

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

waves = [(frequency, amplitude) * wave_count]

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

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

谢谢,

维克多

附言

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

做到了:

waves = [(frequency, amplitude)] * wave_count

【问题讨论】:

    标签: python python-3.2


    【解决方案1】:

    使用真正的列表推导:

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

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

    waves = [(frequency, amplitude)] * wave_count
    

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

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

    【讨论】:

    • 感谢您的评论。您提供的两个示例之间是否存在语义差异(一个是“真正的列表理解”,一个显然不是)?
    • @Victor:展开以解释差异。
    猜你喜欢
    • 2022-06-15
    • 2016-05-25
    • 2015-10-30
    • 2021-08-02
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    相关资源
    最近更新 更多