0

Hi I just want to get points out of a points list. The steps are also in a list, every step is different.

For example: Get points by index from 0 to 10 than from 11 to 16.

The lists are examples. The real list are much bigger.

Here is my code:

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *


number=[10,5,2,20,..,4)
pointlist=[point1,point2,..,point900]
result=[]
a=0
i=0

for elem in number:
    result.append(list[a:a+number[i]])
    i+=1

print = result

In the moment I got an error

TypeError: expected Array[Type], got slice
in line "result.append(list[a:a+number[i]])"

What im doing wrong? Any help would be great!

Here is a link to a similar topic: Explain Python's slice notation

Community
  • 1
  • 1
Yuli
  • 243
  • 4
  • 9

2 Answers2

1

Is this what you are looking for:

number=[10,5,2,20,12,15,6,9,12,14,4]
pointlist=[2,4,7,10]
result=[]
index = 0

for elem in pointlist:
    result.append(number[index:elem])
    index = elem
result.append(number[index:])
print(result)

output:

[[10, 5], [2, 20], [12, 15, 6], [9, 12, 14], [4]]
Vikash Singh
  • 13,213
  • 8
  • 40
  • 70
1

You use wrong name list but you have pointlist.

And you don't need i because you can use elem

number = [10, 5, 2, 20, 4]

pointlist = ['point'+str(i) for i in range(1, 51)]

result = []

a = 0

for elem in number:
    b = a + elem
    result.append(pointlist[a:b])
    a = b

print(result)

result

[
  ['point1', 'point2', 'point3', 'point4', 'point5', 'point6', 'point7', 'point8', 'point9', 'point10'], 
  ['point11', 'point12', 'point13', 'point14', 'point15'], 
  ['point16', 'point17'], 
  ['point18', 'point19', 'point20', 'point21', 'point22', 'point23', 'point24', 'point25', 'point26', 'point27', 'point28', 'point29', 'point30', 'point31', 'point32', 'point33', 'point34', 'point35', 'point36', 'point37'], 
  ['point38', 'point39', 'point40', 'point41']
]
furas
  • 134,197
  • 12
  • 106
  • 148