<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><br>
</p>
<div class="moz-cite-prefix">Il 30/04/2020 19:53, Marco Beri ha
scritto:<br>
</div>
<blockquote type="cite"
cite="mid:CAN1J36gTcwNpyq4=3ywnty=RZZEcPnjMxts1VNYTfbi1f1gMcQ@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">On Thu, Apr 30, 2020 at 7:45 PM Carpediem <<a
href="mailto:i.carpediem@tiscali.it" moz-do-not-send="true">i.carpediem@tiscali.it</a>>
wrote:</div>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>
<div>Il 30/04/2020 18:54, Marco Beri ha scritto:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div dir="ltr">On Thu, Apr 30, 2020 at 6:18 PM
Carpediem <<a
href="mailto:i.carpediem@tiscali.it"
target="_blank" moz-do-not-send="true">i.carpediem@tiscali.it</a>>
wrote:<br>
</div>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px
0px 0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">Grazie
Alessandro. Mi hai fatto notare l'assenza
dell'istruzione break e <br>
ora che l'ho inserita, il programma termina la sua
esecuzione.<br>
<br>
Purtroppo, non mi restituisce ciò che mi aspetto e
continuo a non capire <br>
perchè. L'ordinamento che cerco, è in<br>
<br>
relazione con l'indice dei numeri della lista di
riferimento e <br>
utilizzare il metodo sorted() per quel che ho
visto, o compreso, non mi <br>
è di aiuto.<br>
<br>
Partendo da questo:<br>
<br>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, <br>
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36]<br>
<br>
[22, 0, 18, 34, 20, 7, 2, 1, 30, 22, 55, 47, 53,
49, 52, 38, 12, 41, 29, <br>
5, 11, 44, 26, 33, 40, 13, 50, 39, 4, 21, 45, 3,
53, 32, 6, 25, 55]<br>
<br>
volevo ottenere questo:<br>
<br>
[10, 36, 12, 32, .............]<br>
<br>
[55, 55, 53, 53, 52, ......]<br>
</blockquote>
<div><br>
</div>
<div>Se guardi la documentazione di cosa fanno zip e
sorted (che ha un parametro reversed) vedrai che
quello che vuoi fare è ottenibile con poche
istruzioni:</div>
<div><br>
</div>
</div>
<blockquote style="margin:0px 0px 0px
40px;border:none;padding:0px">
<div class="gmail_quote"><font face="monospace">>>>
riepilogo_numeri_singoli = [0, 1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24,<br>
... 25, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36]<br>
>>> <br>
>>> ritardo_numeri_singoli = [22, 0,
18, 34, 20, 7, 2, 1, 30, 22, 55, 47, 53, 49, 52,
38, 12, 41, 29, 5, 11, 44, 26, 33, 40, 13, 50,
39, 4, 21,<br>
... 45, 3, 53, 32, 6,
25, 55]<br>
>>> <br>
</font>
<div><font face="monospace">>>>
ritardo_numeri_singoli_ordine_decrescente ,
numeri_singoli_in_ordine =
zip(*sorted(zip(ritardo_numeri_singoli,
riepilogo_numeri_singoli), reverse=True))<br>
</font><font face="monospace">>>> <br>
</font><font face="monospace">>>>
ritardo_numeri_singoli_ordine_decrescente<br>
(55, 55, 53, 53, 52, 50, 49, 47, 45, 44, 41,
40, 39, 38, 34, 33, 32, 30, 29, 26, 25, 22,
22, 21, 20, 18, 13, 12, 11, 7, 6, 5, 4, 3, 2,
1, 0)<br>
</font><font face="monospace">>>> <br>
</font><font face="monospace">>>>
numeri_singoli_in_ordine<br>
(36, 10, 32, 12, 14, 26, 13, 11, 30, 21, 17,
24, 27, 15, 3, 23, 33, 8, 18, 22, 35, 9, 0,
29, 4, 2, 25, 16, 20, 5, 34, 19, 28, 31, 6, 7,
1)</font><br>
</div>
<div><font face="monospace">>>> <br>
</font></div>
</div>
</blockquote>
<div class="gmail_quote">
<div><br>
</div>
<div>Ciao.</div>
<div>Marco.</div>
</div>
</div>
</blockquote>
<p><br>
</p>
<p>Grazie per il tuo tempo Marco. Scoprire che tutto il
casino che ho scritto si può riassumere in una sola
istruzione quasi mi demoralizza. Tuttavia, il risultato
che ottengo con ciò che mi</p>
<p>hai suggerito, non è ciò che voglio. il primo numero
della lista ritardo_numeri_singoli_in_ordine_decrescente
è il numero 55 che nella lista ritardo_numeri_singoli
aveva indice 10 e in corrispondenza</p>
<p>dell'indice 10 della lista riepilogo_numeri_singoli c'è
il numero 10 che dovrebbe essere il primo numero
presente nella lista numeri_singoli_in ordine. Il
secondo 55 aveva indice 36 e quindi il numero</p>
<p>corrispondente con tale indice nella lista
riepilogo_numeri_singoli (il 36) dovrebbe essere il
secondo numero presente nella nuova lista e così via.
Quindi [10, 36, 12, 32 ....]</p>
<p>La tua soluzione mi rende invece un risultato diverso.
Molto probabilmente l'intenzione di ciò che voglio
ottenere è stata da me espressa poco chiaramente. <br>
</p>
<p>L'istruzione sort con reverse = True l'avevo usata
anche io per l'ordine decrescente ma l'Istruzione zip è
invece a me totalmente sconosciuta. Cercherò di capirci
qualcosa.</p>
<p>E' comunque utilizzabile per ciò che mi serve? In caso
affermativo vedere l'istruzione che rende il risultato
corretto mi faciliterebbe molto a comprendere il suo
funzionamento.</p>
<p>Se ti fosse possibile, sono certo ne troverei
giovamento.<br>
</p>
</div>
</blockquote>
<div><br>
</div>
<div>La funzione zip fa questo:</div>
<div><br>
</div>
</div>
<blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div class="gmail_quote">
<div><font face="monospace">>>> list(zip([1,2,3],
['a', 'b', 'c']))</font></div>
</div>
<div class="gmail_quote">
<div><font face="monospace">[(1, 'a'), (2, 'b'), (3, 'c')]</font></div>
</div>
</blockquote>
<div class="gmail_quote">
<div><br>
</div>
<div>Passandogli un parametro con l'* in pratica gli facciamo
fare il contrario: </div>
<div><br>
</div>
</div>
<blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div class="gmail_quote">
<div><font face="monospace">>>> list(zip(*[(1,
'a'), (2, 'b'), (3, 'c')]))</font></div>
</div>
<div class="gmail_quote">
<div><font face="monospace">[(1, 2, 3), ('a', 'b', 'c')]</font></div>
</div>
</blockquote>
<div class="gmail_quote">
<div><br>
</div>
<div>Ma nel tuo caso lei fa il suo dovere, dobbiamo invece
modificare il comportamento della funzione sorted:</div>
<div><br>
</div>
</div>
<blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div class="gmail_quote">
<div><font face="monospace">>>>
ritardo_numeri_singoli_ordine_decrescente ,
numeri_singoli_in_ordine =
zip(*sorted(zip(ritardo_numeri_singoli,
riepilogo_numeri_singoli), <span
style="background-color:rgb(255,255,0)">key=lambda
x:(x[0],-x[1]), reverse=True</span>))</font></div>
</div>
<div class="gmail_quote">
<div><font face="monospace">>>>
ritardo_numeri_singoli_ordine_decrescente</font></div>
</div>
<div class="gmail_quote">
<div><font face="monospace">(55, 55, 53, 53, 52, 50, 49, 47,
45, 44, 41, 40, 39, 38, 34, 33, 32, 30, 29, 26, 25, 22,
22, 21, 20, 18, 13, 12, 11, 7, 6, 5, 4, 3, 2, 1, 0)</font></div>
</div>
<div class="gmail_quote">
<div><font face="monospace">>>>
numeri_singoli_in_ordine</font></div>
</div>
<div class="gmail_quote">
<div><font face="monospace">(10, 36, 12, 32, 14, 26, 13, 11,
30, 21, 17, 24, 27, 15, 3, 23, 33, 8, 18, 22, 35, 0, 9,
29, 4, 2, 25, 16, 20, 5, 34, 19, 28, 31, 6, 7, 1)</font></div>
</div>
</blockquote>
<div class="gmail_quote">
<div><br>
</div>
<div>In pratica diciamo alla funzione sorted di usare per
l'ordinamento inverso il primo numero così com'è (il
ritardo) e il secondo numero al contrario.<br>
</div>
<div>In alternativa potevamo dirgli di non fare l'ordine
inverso e invertire il primo, il risultato non cambia:</div>
<div><br>
</div>
<div>
<blockquote style="margin:0px 0px 0px
40px;border:none;padding:0px">
<div class="gmail_quote"><font face="monospace">>>>
ritardo_numeri_singoli_ordine_decrescente ,
numeri_singoli_in_ordine =
zip(*sorted(zip(ritardo_numeri_singoli,
riepilogo_numeri_singoli), <span
style="background-color:rgb(255,255,0)">key=lambda
x:(-x[0],x[1])</span>))<br>
>>> ritardo_numeri_singoli_ordine_decrescente<br>
(55, 55, 53, 53, 52, 50, 49, 47, 45, 44, 41, 40, 39,
38, 34, 33, 32, 30, 29, 26, 25, 22, 22, 21, 20, 18,
13, 12, 11, 7, 6, 5, 4, 3, 2, 1, 0)<br>
>>> numeri_singoli_in_ordine<br>
(10, 36, 12, 32, 14, 26, 13, 11, 30, 21, 17, 24, 27,
15, 3, 23, 33, 8, 18, 22, 35, 0, 9, 29, 4, 2, 25, 16,
20, 5, 34, 19, 28, 31, 6, 7, 1)</font><br>
</div>
</blockquote>
</div>
<div><br>
</div>
<div>Ok, confesso che è un po' complicato (le funzioni lambda
sono un pochino avanzate), però anche quello che vuoi fare
tu lo è.<br>
</div>
<div><br>
</div>
<div>Ciao.<br>
Marco.</div>
</div>
</div>
</blockquote>
<p><br>
</p>
<p>Punto 1) Non avrei mai risolto il problema da solo</p>
<p>Punto 2) La soluzione è bellissima e ha un fascino di mistero
come certe belle donne</p>
<p>Punto 3) Come certe belle donne è tanto complicata che a volte
dici: non so cosa le passa per la testa</p>
<p>Punto 4) In questo caso dico: è talmente complicata che non so
come farà ad entrarmi in testa</p>
<p>Punto 5) ho cercato in rete info sulla funzione zip ma al momento
non ho trovato nulla di spiegato in modo semplice ma comunque
approfondito: hai riferimenti?<br>
</p>
<p>Punto 6) Addirittura due soluzioni diverse: geniale ed
invidiabile. Una riga di codice contro le circa 30 da me
utilizzate!!!!<br>
</p>
<p>Punto 7) nel guardare la tua prima soluzione (quella che non
combaciava con ciò che volevo ottenere) forse ho compreso come in
quel caso ha lavorato la funzione zip!!! farò delle prove con
altri dati tentando di anticiparne su carta il risultato</p>
<p>Punto 8) Ma dove hai imparato? Avevo immaginato che mi ero
infilato in qualcosa di complicato e la tua conferma un poco mi
consola</p>
<p>Punto 9) La soluzione che stavo sperimentando mi resta un mistero
sul suo non fuzionamento anche perchè all'inizio parte bene e poi
si perde. Sempre per imparare, ma dov'era l'errore?</p>
<p>Punto 10) Cento volte Grazie.</p>
<p>Isidoro<br>
</p>
<blockquote type="cite"
cite="mid:CAN1J36gTcwNpyq4=3ywnty=RZZEcPnjMxts1VNYTfbi1f1gMcQ@mail.gmail.com">
<div dir="ltr">
<div class="gmail_quote">
<div><br>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
Python mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Python@lists.python.it">Python@lists.python.it</a>
<a class="moz-txt-link-freetext" href="https://lists.python.it/mailman/listinfo/python">https://lists.python.it/mailman/listinfo/python</a>
</pre>
</blockquote>
</body>
</html>