2017-01-26 2 views
0

Я хочу создать последовательность кортежей различной длины. Например, иногда я мог бы последовательность с 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. Каков самый быстрый способ сделать это?

ответ

3

Просто используйте обычный генератор с 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])) 
+0

Спасибо. TigerhawkT3 Я продолжал пробовать это ((0.0, 100.0)) * 3. Запятая делает всю разницу! (PS.I не будет включать изменяемые типы) – Mel

Смежные вопросы