ваша ошибка генерируется, потому что вы добавляете в свои списки списков k
целое число: k[index].append(a)
на первой итерации, а на второй итерации вашей второй внутренней for
l oop с помощью i[0]
вы делаете int_type[0]
:
def solution(l):
if 1 in l:
l.pop(l.index(1))
k=[[min(l)]]
l.pop(l.index(min(l)))
for e1, a in enumerate(l):
for index,i in enumerate(k):
print('outer loop ', e1, ' inner loop ', index)
print('k = ', k)
print('i = ', i)
if a % i[0] == 0:
k[index].append(a)
else:
k.append(a)
print(k)
solution([1, 2, 3, 4, 5, 6])
вывод:
outer loop 0 inner loop 0
k = [[2]]
i = [2]
outer loop 0 inner loop 1
k = [[2], 3]
i = 3
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-51-5da45c05c964> in <module>
15 print(k)
16
---> 17 solution([1, 2, 3, 4, 5, 6])
<ipython-input-51-5da45c05c964> in solution(l)
9 print('k = ', k)
10 print('i = ', i)
---> 11 if a % i[0] == 0:
12 k[index].append(a)
13 else:
TypeError: 'int' object is not subscriptable
То, как вы используете внутренний for
l oop, не так, как вы должны это делать, добавляя элементы в вашем списке во время итерации могут привести к неожиданному поведению, например, итерации навсегда, и Cru sh ваша программа
решение (l) берет список и составляет список чисел, которые делится на другие меньшие числа
def solution(l):
return [[e for e in l if i%e==0] for i in l]
solution([1, 2, 3, 4, 5, 6])
# [[1], [1, 2], [1, 3], [1, 2, 4], [1, 5], [1, 2, 3, 6]]