如何创建一系列元组?

时间:2017-01-26 00:08:40

标签: python python-2.7 tuples sequence

我想创建一系列不同长度的元组。例如,有时我可能想要一个包含3个元组的序列:

class DrawPanel extends JPanel {

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawRect(10, 10, 200, 200);
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(400, 300);
    }
}

其他时候我可能想要一个包含4个元组的序列:

((0.0, 100.0), (0.0, 100.0), (0.0,100.0))

我正在使用Python 2.7。 最快的方法是什么?

1 个答案:

答案 0 :(得分:6)

只需使用range的普通生成器:

>>> tuple((0., 100.) for _ in range(3))
((0.0, 100.0), (0.0, 100.0), (0.0, 100.0))
>>> tuple((0., 100.) for _ in range(4))
((0.0, 100.0), (0.0, 100.0), (0.0, 100.0), (0.0, 100.0))

您也可以使用乘法,但如果您决定包含可变对象,则可能会产生意外影响,因为它们是通过引用复制的:

>>> ((0., 100.),) * 3
((0.0, 100.0), (0.0, 100.0), (0.0, 100.0))
>>> ((0., 100.),) * 4
((0.0, 100.0), (0.0, 100.0), (0.0, 100.0), (0.0, 100.0))
>>> a = ((0., 100., []),) * 3
>>> a
((0.0, 100.0, []), (0.0, 100.0, []), (0.0, 100.0, []))
>>> a[0][-1].append(1)
>>> a
((0.0, 100.0, [1]), (0.0, 100.0, [1]), (0.0, 100.0, [1]))