将相同的元组复制到N.

时间:2017-09-11 21:04:21

标签: python

我有相同的(0,1)元组,用于定义3个输入值的限制:

bounds = ((0, 1), (0, 1), (0, 1))

是否有一种Pythonic方法为N个输入分配相同的元组?例如:

bounds = ((0, 1), (0, 1), (0, 1), (0, 1), (0, 1), ...Nth(0, 1))

4 个答案:

答案 0 :(得分:6)

您可以将序列相乘以获得其内容的N个浅拷贝:

bounds = ((0, 1),) * n

对于仅包含不可变类型的整数元组或其他不可变数据结构,这很好,但如果将它用于列表等可变数据结构,则会导致surprising behavior - 您将获得对同一列表的n个引用序列,因为它是一个浅薄的副本。在这种情况下,理解是创建n个独立对象的最惯用的方法:

mutable_bounds = [[0, 1] for _ in range(n)]

答案 1 :(得分:2)

bounds = ((0, 1),) * N

适用于任何可迭代的BTW:'1111' == '1' * 4

答案 2 :(得分:2)

itertools.repeat()替代方案:

.frontend-background-image p:nth-child(1) {
    font-size: 2.875em;
    color: white;
    text-align: center;
    padding-top: 8%;
    padding-left: 5%;
}

.frontend-background-image p:nth-child(2) {
    color: white;
    text-align: center;
    padding-left: 5%;
    font-size: 46px;
}

输出:

import itertools

n = 5    # coefficient
bounds = tuple(itertools.repeat((0,1), n))
print(bounds)

答案 3 :(得分:2)

您可以在元组列表中使用乘法运算符(*)。例如:

((0,1),) * 3 

的产率:

((0, 1), (0, 1), (0, 1))