int 类型的对象不可迭代
Object of type int is not iterable
这是我的代码:
NUM = 3
A = [1,5,6,2,8,4,3,2,5]
B = []
m = []
check = False
summ=0
n = len(A) / NUM
while check == False:
for i in A:
if A.index(i) >= n:
B.append(m)
m = []
n *= 2
m.append(i)
B.append(m)
for j in B:
s1=(sum(B[0]))
s2=(sum(B[1]))
s3=(sum(B[2]))
print(B)
if s1==s2==s3:
summ=s1
check = True
else:
B = [0] * len(A)
ilg = len(A)
B[0]=A[ilg-1]
for i in range(len(A)-1):
B[i+1] = A[i]
for i in range(len(A)):
A[i]=B[i]
我想做的是将我的列表分成 3 个列表,如果这些列表中的数字总和相等,则打印总和,否则打印 'FALSE'。
例如:[1,2,3,4,5,6,7,8,9]
,
拆分后:[1,2,3],[4,5,6],[7,8,9]
但我收到一个错误:
s1=[sum(B[0])] TypeError: 'int' object is not iterable
我做错了什么?
编辑:我还有更多内容,else 之后的部分应该将列表从 [1,5,6,2,8,4,3,2,5] 更改为 [5,1,5,6, 2,8,4,3,2] 等等。
你的问题是这一行:
B[0]=A[ilg-1]
您正在将整数分配给 B[0]
,这不是可迭代对象。在围绕循环的第二次迭代中,您将 B[0]
传递给 sum
函数,该函数尝试对其进行迭代,抛出异常。
因为你定义的范围不正确。您希望 i
成为您的索引,对吗?所以使用:
for i in np.arange(0, len(B)):
导入后 numpy
:
import numpy as np
编辑:实际上不需要包,只是:for i in range(0, len(B)):
A = [1,5,6,2,8,4,3,2,5]
NUM = 3
n = len(A) / NUM
# here make sure that len(A) is a multiple of NUM
sums = [sum([item for item in A[i * NUM :(i + 1) * NUM]]) for i in range(n)]
# for python versions older than 3 use xrange instead of range.
for i in sums[1:]:
if i != sums[0]:
print "FALSE"
break
else:
print sums[0]
这是我的代码:
NUM = 3
A = [1,5,6,2,8,4,3,2,5]
B = []
m = []
check = False
summ=0
n = len(A) / NUM
while check == False:
for i in A:
if A.index(i) >= n:
B.append(m)
m = []
n *= 2
m.append(i)
B.append(m)
for j in B:
s1=(sum(B[0]))
s2=(sum(B[1]))
s3=(sum(B[2]))
print(B)
if s1==s2==s3:
summ=s1
check = True
else:
B = [0] * len(A)
ilg = len(A)
B[0]=A[ilg-1]
for i in range(len(A)-1):
B[i+1] = A[i]
for i in range(len(A)):
A[i]=B[i]
我想做的是将我的列表分成 3 个列表,如果这些列表中的数字总和相等,则打印总和,否则打印 'FALSE'。
例如:[1,2,3,4,5,6,7,8,9]
,
拆分后:[1,2,3],[4,5,6],[7,8,9]
但我收到一个错误:
s1=[sum(B[0])] TypeError: 'int' object is not iterable
我做错了什么?
编辑:我还有更多内容,else 之后的部分应该将列表从 [1,5,6,2,8,4,3,2,5] 更改为 [5,1,5,6, 2,8,4,3,2] 等等。
你的问题是这一行:
B[0]=A[ilg-1]
您正在将整数分配给 B[0]
,这不是可迭代对象。在围绕循环的第二次迭代中,您将 B[0]
传递给 sum
函数,该函数尝试对其进行迭代,抛出异常。
因为你定义的范围不正确。您希望 i
成为您的索引,对吗?所以使用:
for i in np.arange(0, len(B)):
导入后 numpy
:
import numpy as np
编辑:实际上不需要包,只是:for i in range(0, len(B)):
A = [1,5,6,2,8,4,3,2,5]
NUM = 3
n = len(A) / NUM
# here make sure that len(A) is a multiple of NUM
sums = [sum([item for item in A[i * NUM :(i + 1) * NUM]]) for i in range(n)]
# for python versions older than 3 use xrange instead of range.
for i in sums[1:]:
if i != sums[0]:
print "FALSE"
break
else:
print sums[0]