为什么我不能将列表中的元素相乘?

时间:2015-10-15 19:56:48

标签: python arrays list python-3.x

我似乎无法将数组中的整数相乘。

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个相邻数字的最大值。

2 个答案:

答案 0 :(得分:2)

grid[i:i+1]将为您提供一个列表,您无法将列表传递给int函数,而不是只能使用i作为索引来获取元素:< / p>

int(grid[i])

如果您不想将int功能应用于元素列表,可以使用map

map(int,my_list)

答案 1 :(得分:0)

你应该使用: value = grid[i:i+1][0] 而不是value = int(grid[i:i+1]) 因为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  
...