簡體   English   中英

我無法將此 Python 函數轉換為 Swift 函數

[英]I'm having trouble converting this Python function to a Swift function

我正在開發適用於 iOS 的此二十一點應用程序,但無法使該功能正常工作。 我用 Python 構建了它,它的工作原理很吸引人,但是當我調整它時,有些東西是不穩定的。 這個想法是獲得卡片的所有可能的價值。 一旦我開始工作,我會總結這些數字。 因此, [[1,11],[4],[5]]將輸出[10,20]

Python代碼

init_array = [[1,11],[3],[4],[1,11],[5]]
r = [[]]
for x in init_array:
    t = []
    for y in x:
        for i in r:
            t.append(i + [y])
    r = t
print(r)

輸出:

[[1, 3, 4, 1, 5], [11, 3, 4, 1, 5], [1, 3, 4, 11, 5], [11, 3, 4, 11, 5]]

SWIFT代碼

var init_array = [[Int]]()
init_array.append([1,11])
init_array.append([3])
init_array.append([4])
init_array.append([1,11])
init_array.append([5])

var r = [[Int]]()
for x in init_array {
    var t = [Int]()
    for y in x{
        for i in r {
            t.append(contentsOf: (i + [y]))
        }
    }
    r = [t]
}
print(r)

輸出:

[[3, 4, 1, 3, 4, 11, 5]]

它是更大函數的一部分,因此為兩個示例創建init_array變量並打印 r 變量是為了測試目的。 init_array 在它到達我的故障代碼時已經生成。

這可能是一行簡單的代碼,但我幾天來一直試圖弄清楚這一點。 我對 Swift 比較陌生,所以這可能需要更高級的人兩秒鍾才能弄清楚。

當您初始化r :在 python 中, r長度為1 ,而在 swift 中,長度為0 這是因為,在 python 中, r被初始化為一個空列表,其中[[]] 但很快,它並沒有發生[] 這導致了不需要的輸出。

最后我找到了一種方法來修復它,方法是在開始時將一個空列表附加到r中。

var r = [[Int]]()
r.append([])

此外t.append(ContentsOf ...)沒有按照您的t.append(ContentsOf ...)創建數組。

這是最終的解決方案

var init_array = [[Int]]()
init_array.append([1,11])
init_array.append([3])
init_array.append([4])
init_array.append([1,11])
init_array.append([5])

var r = [[Int]]()
r.append([])
print(r.count,r) // debuggging part
for x in init_array {
    var t = [[Int]]()
    for y in x{
        for i in r {

            //method 1 
            var dm=[Int]() //for making the kind of arrays u wanted
            dm.append(contentsOf: (i + [y]))  // appending it to array
            t.append(dm)
            // Or
            //method 2
            t+=[(contentsOf: (i + [y]))] as! [[Int]] //HereWeTypeCastToInt
        }
        print(t,y) // debuggging part
    }
    r = t
}
print(r)

輸出:[[1, 3, 4, 1, 5], [11, 3, 4, 1, 5], [1, 3, 4, 11, 5], [11, 3, 4, 11, 5] ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM