2015-10-15 95 views
1

我似乎無法乘以我的數組中的整數。爲什麼我無法將列表中的元素相乘?

grid = [8, 2, 22, 97, 38, 35, 29, 76, 51, 87] 

digits = 1 
startPos = 0 
total = [] 

for i in range(0,7): 
    for i in range(startPos, startPos+3): 
     value = int(grid[i:i+1]) 
     digits = digits * value 
    total.append(digits) 
    startPos = startPos + 1 
    digits = 1 

我不斷收到錯誤

int() argument must be a string, a bytes-like object or a number, not 'list' 

據我知道在我的數組中的值是整數。我做錯了什麼?爲了澄清,我正在尋找陣列中任何3個相鄰數字所能產生的最大值。

+0

的列表,您能不能給一個數組作爲參數傳遞給'int'。嘗試把'int(grid [i])'而不是'int(grid [i:i + 1])' –

+0

'grid [i:i + 1]'得到一個切片而不是一個元素。 '[1,2,3,4] [1:2] - > [2]' –

回答

2

grid[i:i+1]會給你一個列表,你不能傳遞一個列表int功能,而不是你可以簡單地使用i作爲指標來獲取元素:

int(grid[i]) 

如果您wan't到int功能應用於元素的列表,你可以使用map

map(int,my_list) 
+0

他們已經ints;) –

+0

@PadraicCunningham他,我明白了! :)我認爲OP意味着他們是數字字符串(我希望它會是這樣;)) – Kasramvd

+1

我認爲他們只是在索引和切片之間感到困惑。一旦代碼更改爲'int(grid [i])'它應該可以工作。 –

0

你應該使用: value = grid[i:i+1][0] 代替value = int(grid[i:i+1]) becouse grid[i:i+1]是LEN 1

for i in range(0,7): 
    for i in range(startPos, startPos+3): 
     print(i,i+1,grid[i:i+1], grid[i:i+1][0]) 

0 1 [8] 8 
1 2 [2] 2 
2 3 [22] 22 
1 2 [2] 2 
... 
相關問題