<div dir="ltr"><div dir="ltr">On Thu, Apr 30, 2020 at 7:45 PM Carpediem <<a href="mailto:i.carpediem@tiscali.it">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">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 class="gmail_quote"><div></div></div></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><br></div></div></div>