Skip to content Skip to sidebar Skip to footer

Iterate Over Array Twice (cartesian Product) But Consider Only Half The Elements

I am trying to iterate over an array twice to have pairs of elements (e_i,e_j) but I only want the elements such that i < j. Basically, what I want would look like this is C-lik

Solution 1:

Just use itertools.combinations(my_list, 2).

Solution 2:

Can't you just use the range function and go with:

vect = [...]
for i in range(0, len(vect)):
    for j in range(i+1, len(vect)):
        do_something()

Solution 3:

I would suggest the following:

midIdx = len(mylist) / 2
[ dosomehing(ele_i, ele_j) for ele_i, ele_j inzip( mylist[0:midIdx], mylist[midIdx + 1:len(mylist)] ) ]

For most interpreted language, for loop is not the best choice. Python provides list comprehension, which is more readable and efficient.

Post a Comment for "Iterate Over Array Twice (cartesian Product) But Consider Only Half The Elements"