[Python] Generalizzando: algoritmi di calcolo

michele a nectarine.it michele a nectarine.it
Gio 22 Ott 2009 04:01:42 CEST


Def. Quota Marco Beri <marcoberi a gmail.com>:

> 2009/10/22 Michele <michele a nectarine.it>
>
>>
>> Riparto da capo: ho s1ev e s2ev.
>> Con l'algoritmo che mi hai fornito calcolo:
>> - quando gli eventi sono attivi contemporaneamente s1 and s2 (actives[2])
>> - quando solo uno dei due eventi è attivo contemporaneamente s1 xor s2
>> (actives[1])
>> - quando non c'è nessuno dei due eventi attivi !s1 and !s2 (actives[0])
>>
>> Ora mi stavo chiedendo come potrei calcolare quando almeno uno dei due
>> eventi è attivo, cioè s1 or s2, e mi stavo chiedendo come calcolarlo.
>> Non posso unire actives[2] e actives[1] perché dovrei fare l'overlap
>> degli istanti adiacenti.
>>
>
> Ah! Finalmente ho capito... Beh ti basta prendere tutto cio che` NON e` in
> actives[0] no?
> Per esempio:
>
> 0 [[0, 1723], [18550, 87361], [98214, 100000], [101000, 9999999]]
> 1 [[1723, 9154], [9307, 9340], [10442, 18550], [87361, 98214], [100000,
> 101000]]
> 2 [[9154, 9307], [9340, 10442]]
>
>
> Prendendo la riga con 0 hai tutti i momenti in cui nessuno e` attivo. La
> "neghi" e hai quelli in cui almeno uno e` attivo. Sempre con quell'esempio:
>
> 1723 - 18550
> 87361 - 98214
> 100000 - 101000
>
> Non va bene cosi`?
>

Esatto va benissimo!
Quindi diresti che il miglior modo per farlo è:

actives_1 = []
for x in range(len(actives[0])-1):
   actives_1.append((actives[0][x][1], actives[0][x+1][0]))

Che ne dici?



Maggiori informazioni sulla lista Python