在Python中相乘元组
我需要创建一个嵌套的元组,其中一些值是相同的,所以我尝试用乘法来实现。
t = ((('a', 'b'),) * 3)
print t
打印结果是
(('a', 'b'), ('a', 'b'), ('a', 'b'))
有没有更好看的写法来做到这一点呢?
谢谢。
4 个回答
1
另一个选择:
from itertools import repeat
tuple(repeat(('a', 'b'), 3))
1
你可以试试这个:
t = (('a', 'b'),)*3
也就是说,简单地去掉括号就可以了。
2
这个表达式的表示方式可以稍微简单一点,但已经很接近标准形式了。我会使用
t = 3 * (('a', 'b'), )
这样可以去掉一对括号,并且在显示元组之前,视觉上提醒你有乘法的存在。你可能会想,是否可以再去掉一对括号,得到
t = 3 * ('a', 'b'),
但是可惜的是,这个表达式的结果并不是我们想要的,反而会得到
(('a', 'b', 'a', 'b', 'a', 'b'),)
也就是说,这是一个只有六个生成元素的元组。
6
一种方法是少用一些括号:
t = (('a', 'b'), ) * 3
这样也能正常工作。