我的相同元組(0,1)分配給定義爲3個輸入值上的限制:複製相同的元組到N
bounds = ((0, 1), (0, 1), (0, 1))
是否有分配相同的元組爲N個輸入一個Python化的方法?例如:
bounds = ((0, 1), (0, 1), (0, 1), (0, 1), (0, 1), ...Nth(0, 1))
我的相同元組(0,1)分配給定義爲3個輸入值上的限制:複製相同的元組到N
bounds = ((0, 1), (0, 1), (0, 1))
是否有分配相同的元組爲N個輸入一個Python化的方法?例如:
bounds = ((0, 1), (0, 1), (0, 1), (0, 1), (0, 1), ...Nth(0, 1))
您可以乘序列來獲取其內容n淺拷貝:
bounds = ((0, 1),) * n
這是罰款,只含有穩定的類型整數或其他不可變的數據結構的元組,而是會導致surprising behavior如果您將它用於可變數據結構(如列表),則會得到一個對同一列表的n個引用的序列,因爲它是淺拷貝。在這種情況下,一個理解是創建n個獨立的對象最習慣的方法:
mutable_bounds = [[0, 1] for _ in range(n)]
確實非常優雅的解決方案@Peter DeGlopper!謝謝 – artDeco
bounds = ((0, 1),) * N
適用於任何可迭代的,BTW:'1111' == '1' * 4
。
對任何_immutable_ iterable都適用_properly_。對於可變的可迭代對象,它再次重複相同的引用:不是任何人想要的。 –
對於不可改變的東西,我猜想,每次你禁止某人想要什麼東西時,上帝會殺死一個平穩運行的過程。 :( – bipll
它重複了元組的引用,是的,但不能在不更改引用的情況下更改列表中的元組:沒有改變所有元素的風險,嘗試'x = [[]] * 10'然後'x [0] .append(1)'看看我在說什麼(https://stackoverflow.com/questions/240178/list-of-lists-changes-reflected-across-sublists-unexpectedly) –
import itertools
n = 5 # coefficient
bounds = tuple(itertools.repeat((0,1), n))
print(bounds)
輸出:
((0, 1), (0, 1), (0, 1), (0, 1), (0, 1))
您可以在元組的列表使用乘法運算符(*
)。例如:
((0,1),) * 3
產量:
((0, 1), (0, 1), (0, 1))
感謝@leonardoandrade的意見。 – artDeco
感謝@讓·弗朗索瓦·法布爾和jonrsharpe對你說的話。那個問題「你如何在Python中創建一個重複的元組列表?」我的目的很難理解。我想保持這個問題的重點和具體,因爲它不是重複的。 – artDeco
它是一個重複的,但這裏給出的答案是好的和upvoted,所以使用這裏的(彼得答案是非常好的)。但它是一個重複的(也許我們可以找到更好的人添加到列表) –
謝謝@ Jean-FrançoisFabre感謝您的輸入:) – artDeco