我有下面的代碼,我想對傳遞給它(字母)的初始數組做出響應。目前它可以處理字母< = 3,但是我想將它擴展到n。基於數組長度的擴展函數
在本例中,如果數組只包含兩個條目[「a」,「b」],則會觸發第二個if語句。
我該如何改變這個有效的無限if語句,允許任何大小的數組?
import itertools
import numpy as np
#variable length
letters = ["a", " b", " c"]
increment = .1
d = 3
e = 3
#Calculate total possible combinations and create array
x=0
for p in itertools.product(range(d), repeat=e):
x = x+1
variable = np.arange(x)
variable_s = [str(x) for x in variable]
x=0
#run loop based on array length.
for p in itertools.product(range(d), repeat=e):
if len(letters) == 1:
variable_s[x] = letters[0]+str(format(p[0]/(increment)**(-1.0),'.2f')).replace("0.", "")
elif len(letters) == 2:
variable_s[x] = (
letters[0]+str(format(p[0]/(increment)**(-1.0),'.2f')).replace("0.", "")
+letters[1]+str(format(p[1]/(increment)**(-1.0),'.2f')).replace("0.", "")
)
elif len(letters) == 3:
variable_s[x] = (
letters[0]+str(format(p[0]/(increment)**(-1.0),'.2f')).replace("0.", "")
+letters[1]+str(format(p[1]/(increment)**(-1.0),'.2f')).replace("0.", "")
+letters[2]+str(format(p[2]/(increment)**(-1.0),'.2f')).replace("0.", "")
)
x = x+1
variable_s
從代碼輸出以上將是: [ 'A00 B00 C00', 'A00 B00 C10', 'A00 B00 C20', 'A00 B10 C00', 「A00 B10 C10 」, 'A00 B10 C20', 'A00 B20 C00', 'A00 B20 C10', 'A00 B20 C20', 'A10 B00 C00', 'A10 B00 C10', 'A10 B00 C20' , 'a10 b10 c00', 'a10 b10 c10', 'a10 b10 c20', 'a10 b20 C00' , 'A10 B20 C10', 'A10 B20 C20', 'A20 B00 C00', 'A20 B00 C10', 'A20 B00 C20', 'A20 B10 C00', 「A20 B10 C10 」, 'A20 B10 C20', 'A20 B20 C00', 'A20 B20 C10', 'A20 B20 C20']
如果字母= [ 「一」, 「b」]的輸出將是: [ 'A00 B00', 'A00 B00', 'A00 B00', 'A00 B10', 'A00 B10', 'A00 B10', 'A00 B20', 'A00 B20', 'A00 B20', 'A10 B00', 'A10 B00', 'A10 B00', 'A10 B10', 'A10 B10', 'A10 B10', ' A10 B20' , 'A10 B20', 'A10 B20', 'A20 B00', 'A20 B00', 'A20 B00', 'A20 B10', 'A20 B10', 「A20 B10 」, 'A20 B20', 'A20 B20', 'A20 B20']
如果字母[ 「一」, 「b」, 「C」 ,「d」,「e」,「f」,「g」]輸出將是: ['a00 b00 c00 d00 e00 f00 g00', 'a00 b00 c00 d00 e00 f00 g10',...等
這段代碼應該做什麼?爲什麼不使用'itertools.combinations'? - 也爲了長度,嵌套for循環應該工作'爲我在範圍內(len(字母)):對於範圍(i)裏:' – sytech
我想創建一個列表中的每個組合(最多任何長度)和相關編號。然後這個列表通過另一個迴路傳遞迴歸模型。 – sdhaus
我編輯了你的代碼來添加換行符(和括號以允許)來更容易地看到這裏的重複 – Eric