我有相同的(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))
答案 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))