我想创建一系列不同长度的元组.例如,有时我可能想要一个包含3个元组的序列:
((0.0, 100.0), (0.0, 100.0), (0.0,100.0))
其他时候我可能想要一个包含4个元组的序列:
((0.0, 100.0), (0.0, 100.0), (0.0, 100.0), (0.0, 100.0))
我正在使用Python 2.7.最快的方法是什么?
只需使用普通发电机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]))