У меня возникают проблемы с репликацией цикла for в python.Python for loop issues
Вот мой сценарий стиля c только для аспектов цикла цикла.
for ($c=0 ; $c<size($verts); $c++)
{
//// do some code here
$verts = remove($verts[c],$verts); /// remove this item from the $verts list
$c-=1; /// lower the index becuase an item was removed
for ($n=0 ; $n<size($verts); $n++)
{
if($condition)
$verts = remove($verts[$n],$verts); /// remove this item from the $verts list
$n-=1; /// lower the index becuase an item was removed
}
}
В питона там не представляется возможным вычесть индекс:
item = range(10);
for i in item :
del item[i]
i-=1 # this doesn't do anything for the next interation
Что это лучший способ, чтобы написать выше цикл с в Python?
Edit: Здесь контур работает как мне нужно в питона
count = range(len(vtx))
for num in count:
if len(vtx) != 0:
p.append ([]); p[len(p)-1].append(vtx[0])
v.append ([]); v[len(p)-1].append(vec[0])
a = vec[0]
del vtx[0]
del vec[0]
count2 = range(len(vtx))
n2 = 0;
for num2 in count2:
b = vec[n2]
distance = math.sqrt((a[0] - b[0])**2 + (a[1]- b[1])**2 + (a[2]- b[2])**2);
if distance <= threshold :
p[len(p)-1].append (vtx[n2])
v[len(p)-1].append (vec[n2])
vtx.remove(vtx[n2])
vec.remove(vec[n2])
else:
n2+=1
Спасибо за все ответы. В конце концов я закончил делать что-то не очень питоническое, потому что у меня было много проблем с индексами, и я понял, что могу немного упростить свой код. (см. обновленный вопрос с рабочим кодом). Но все ответы были полезными, и я понимаю, как сейчас работает python. – fghajhe
@fghajhe Я опубликовал версию, основанную на вашем редактировании, что немного легче следовать. Не уверен, что это актуально, но ваш алгоритм зависит от порядка. Если вы переупорядочиваете пары vtx/vec, вы получите разные результаты. –