在Python中相乘元组

2 投票
4 回答
1918 浏览
提问于 2025-04-18 15:53

我需要创建一个嵌套的元组,其中一些值是相同的,所以我尝试用乘法来实现。

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

这样也能正常工作。

撰写回答