improving a huge double-for cycle
Paul Hankin
paul.hankin at gmail.com
Thu Sep 18 16:14:50 EDT 2008
On Sep 18, 2:25 pm, Alexzive <zasaconsult... at gmail.com> wrote:
> Hello there :) ,
>
> I am a python newbie and need to run following code for a task in an
> external simulation programm called "Abaqus" which makes use of python
> to access the mesh (ensamble of nodes with xy coordinates) of a
> certain geometrical model.
>
> [IN is the starting input containing the nodes to be check, there are
> some double nodes with the same x and y coordinates which need to be
> removed. SN is the output containing such double nodes]
>
> Code: Select all
> for i in range(len(IN)): #scan all elements of the list IN
> for j in range(len(IN)):
> if i <> j:
> if IN[i].coordinates[0] == IN[j].coordinates[0]:
> if IN[i].coordinates[1] == IN[j].coordinates[1]:
> SN.append(IN[i].label)
Using only a little extra storage to compute IN (but O(N log N)
time complexity):
import itertools
IN.sort()
SN = [k for k, v in itertools.groupby(IN) if len(list(v)) > 1]
--
Paul Hankin
More information about the Python-list
mailing list