Me gusta dividir una matriz en la primera mitad y su segunda mitad. Intenté seguir el código, pero no funciona:

A = [1,2,3,4,5,6]
B = A[:len(A)/2]
C = A[len(A)/2:]

El mensaje de error dice:

TypeError: slice indices must be integers or None or have an __index__ method

Supuestamente, debería obtener

B = [0,1,2]

C = [3,4,5]

Me pregunto cómo debería hacerlo. Gracias

0
Nick X Tsui 1 mar. 2018 a las 21:27

3 respuestas

La mejor respuesta

Estás haciendo matemática flotante - usa la división de enteros:

A = [1,2,3,4,5,6]
B = A[:len(A)//2]
C = A[len(A)//2:]

print(A,B,C)

Salida:

([1, 2, 3, 4, 5, 6], [1, 2, 3], [4, 5, 6])

Eche un vistazo a los operadores aquí: numeric-types-int-float-complex

4
Patrick Artner 1 mar. 2018 a las 18:36

El mensaje de error indica que debería estar usando enteros. Su división por 2 actualmente resulta en un flotador. Puedes convertirlo en un entero usando int():

A = [1,2,3,4,5,6]
B = A[:int(len(A)/2)]
C = A[int(len(A)/2):]

print(B)
print(C)

Fuera:

[1, 2, 3]
[4, 5, 6]
2
Dennis Soemers 1 mar. 2018 a las 18:44

Probar esto

A = [1,2,3,4,5,6]
half = len(A)//2
B = A[:half]
C = A[half:]
3
Boko Moko 1 mar. 2018 a las 18:34