2010-11-12 5 views
1

Je crée un programme en python et j'ai une erreur que je ne peux pas résoudre.problème avec les tableaux en python, aide!

C'est le problème:

J'ai un ensemble de points dans l'espace 3D, et je stocke dans un vecteur (râteau). Mon but est de construire une surface de flux. Donc j'ajoute ces points à une autre liste pour que je puisse avoir tous les points de la "ligne" avant.

La liste de coupe a ce format:

[[60, 0, 50], [63, 3, 50], [66, 6, 50], [69, 9, 50], [72, 12, 50], 
[75, 15, 50], [78, 18, 50], [81, 21, 50], [84, 24, 50], [87, 27, 50], 
[90, 30, 50], [93, 33, 50], [96, 36, 50], [99, 39, 50], [102, 42, 50]] 

Puis, quand je joins les points à l'autre liste (points_list) est comme ceci:

[[[60, 0, 50], [63, 3, 50], [66, 6, 50], [69, 9, 50], [72, 12, 50], 
[75, 15, 50], [78, 18, 50], [81, 21, 50], [84, 24, 50], [87, 27, 50], 
[90, 30, 50], [93, 33, 50], [96, 36, 50], [99, 39, 50], [102, 42, 50]]] 

Mon point est que le points_list I Je peux connaître le niveau d'itération avec lequel j'ai affaire, afin que je puisse rendre la surface à la fin.

Lorsque j'essaie d'obtenir, par exemple, un élément des points_arrays que j'ai et une erreur d'index. c'est le code:

points_arrays.append (râteau)

for i in range(iterations):  
    for j in range(rlength):  
    print points_arrays[i][j][0],points_arrays[i][j][1],points_arrays[i][j][1] 

Quand je lance cette partie du code que je suis en mesure d'obtenir les points, mais à la fin je reçois une erreur d'index. (IndexError: list index out of range)

Quelqu'un peut-il m'aider à résoudre ce problème?

+0

Qu'est-ce que dimention est la 'points_list' censés avoir? Actuellement c'est juste une liste de 15 éléments dans une liste d'un élément dans une liste d'un élément, cela semble très étrange ... –

+0

Qu'est-ce que 'points_arrays' et comment cela se rapporte-t-il à' points_list'? –

Répondre

1
for rake in points_list: 
    for point in rake: 
    print point[0], point[1], point[2] 

Si vous souhaitez utiliser des numéros comme index:

for npoint in xrange(len(points_list)) 
    for nrake in xrange(len(points_list[npoint])) 
    print points_list[npoint][nrake][0], points_list[npoint][nrake][1], points_list[npoint][nrake][2] 
3

Votre principal problème est que vous devez utiliser extend au lieu de append:

points_list.extend(rake) 

En effet, append ajoute un seul objet à la fin de la liste. Dans ce cas, cela signifie que toute la deuxième liste est ajoutée en tant qu'élément unique.

append - ajouter objet de mettre fin à
Extend - étendre la liste en ajoutant des éléments de la itérables

Vous devez également être au courant des points suivants qui ne sont pas directement liés à votre problème:

  • En Python, l'objet créé lorsque vous écrivez [1, 2, 3] s'appelle une liste, pas un tableau.
  • Votre impression est erronée. La deuxième occurrence de points_arrays[i][j][1] devrait être points_arrays[i][j][2]