Re: [Python] or
2014-03-29 18:38 GMT+01:00 Diego Barrera : > On 18/03/2014 16:53, Manlio Perillo wrote: > >> 2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - < >> filippo.dalbo...@whiteready.com>: >> >> dalla lista row devo togliere alcune word in posizione variabile per >>> costruire un' alta lista >>> exclude = {'', 'pippo', 'pluto'} >>> >> >> # soluzione veloce: >> print set(row) - exclude >> >> Ho dato una ripassata veloce al tipo di dato set; > esattamente quale e' l'utilizzo pratico di set? > ( a parte il bellissimo esempio di codice quotato ) > Nel codice che leggo di solito mi sembra non averne mai visto l'utilizzo.. > > A parte gli operatori/metodi di unione, intersezione, etc., che comunque > posso implementare tramite le liste, mi sembra che non aggiungano niente: > posso vivere tranquillamente senza? :) > Un set è concetto matematico; puoi certamente implementare i set tramite liste (ed alcuni linguaggi lo fanno, e per pochi elementi va benissimo), ma una implementazione specializzata offre prestazioni di molto migliori con insiemi grandi. Forse e' una questione di prestazioni? > > Si. Ma anche di convenienza. Se implementi i set con una lista, devi garantire tu che la lista sia ordinata; in Python poi hai anche la "convenienza" di poter usare operatori dedicati. Ciao Manlio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
On 03/29/2014 06:38 PM, Diego Barrera wrote: Ho dato una ripassata veloce al tipo di dato set; esattamente quale e' l'utilizzo pratico di set? ( a parte il bellissimo esempio di codice quotato ) Nel codice che leggo di solito mi sembra non averne mai visto l'utilizzo.. Ad esempio, supponiamo di avere una lista di indirizzi IP, dove ogni indirizzo rappresenta una richiesta arrivata al tuo sito web: >>> hits = ['IP1', 'IP2', 'IP3', 'IP1', 'IP4', 'IP2'] Hai avuto 2 richieste sia da IP1 che da IP2, una da IP3 e una da IP4. Se vuoi sapere quali sono i tuoi visitatori unici, puoi farlo in modo immediato utilizzando un set: >>> unique_visitors = set(hits) >>> unique_visitors set(['IP2', 'IP3', 'IP1', 'IP4']) Se ci pensi un attimo, ti verranno in mente una miriade di altri casi d'uso ;) -- Marco Buttu INAF-Osservatorio Astronomico di Cagliari Via della Scienza n. 5, 09047 Selargius (CA) Phone: 070 711 80 217 Email: mbu...@oa-cagliari.inaf.it ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
On 29/03/2014 20:02, Diego Barrera wrote: >>>{1,1,5,1352467,12,1,5,2} | {2,7,3,54,6,21,1,45,6,87} {1, 2, 3, 5, 6, 7, 12, 45, 1352467, 21, 54, 87} Certo che puoi reimplementarli daccapo, ma perché ?? Posso dire che trovano molto impiego in calcoli matematici? Grazie mille PS: i tuoi insiemi contengono solo numeri.. e' un indizio o ci sono solo numeri perche' e' piu' veloce l'inserimento? E' solo un esempio a caso, con la cosa piú veloce da scrivere :D ! Serve molto anche se lavori con i Database. Metti caso che hai 300 clienti e 300 fornitori, ognuno con la sua cittá di appartenenza. Hai estratto con SQL i due elenchi delle cittá, ma vuoi unirli e non avere duplicati. >>> {'Mantova', 'Cremona'} | {'Cremona', 'Lucca'} {'Lucca', 'Cremona', 'Mantova'} Possono anche essere insiemi con tipi eterogenei... >>> {'Mantova', 'Cremona'} | {'Cremona', 'Lucca', 3} {3, 'Lucca', 'Cremona', 'Mantova'} -- Paolo Gatti ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
On 29/03/2014 19:06, lordkrandel wrote: Il tipo "set" é la rappresentazione di un insieme. Effettivamente dal punto di vista logico i set e le liste rappresentano due oggetti differenti. L'intersezione, la differenza e la deduplicazione sono operazioni molto comode con questo tipo di dati, specie se la sintassi é cosí zuccherosa: >>>{1,1,5,1352467,12,1,5,2} | {2,7,3,54,6,21,1,45,6,87} {1, 2, 3, 5, 6, 7, 12, 45, 1352467, 21, 54, 87} Certo che puoi reimplementarli daccapo, ma perché ?? Posso dire che trovano molto impiego in calcoli matematici? Grazie mille PS: i tuoi insiemi contengono solo numeri.. e' un indizio o ci sono solo numeri perche' e' piu' veloce l'inserimento? ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
On 29/03/2014 19:03, Daniele Zambelli wrote: Il 29 marzo 2014 18:38, Diego Barrera ha scritto: Ho dato una ripassata veloce al tipo di dato set; esattamente quale e' l'utilizzo pratico di set? La differenza fondamentale è che in un insieme gli elementi non sono ripetuti. Ah! Giusto! Ti ringrazio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
On 29/03/2014 18:38, Diego Barrera wrote: esattamente quale e' l'utilizzo pratico di set? [...] A parte gli operatori/metodi di unione, intersezione, etc., che comunque posso implementare tramite le liste, Il tipo "set" é la rappresentazione di un insieme. L'intersezione, la differenza e la deduplicazione sono operazioni molto comode con questo tipo di dati, specie se la sintassi é cosí zuccherosa: >>>{1,1,5,1352467,12,1,5,2} | {2,7,3,54,6,21,1,45,6,87} {1, 2, 3, 5, 6, 7, 12, 45, 1352467, 21, 54, 87} Certo che puoi reimplementarli daccapo, ma perché ?? -- Paolo Gatti ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
Il 29 marzo 2014 18:38, Diego Barrera ha scritto: > Ho dato una ripassata veloce al tipo di dato set; > esattamente quale e' l'utilizzo pratico di set? La differenza fondamentale è che in un insieme gli elementi non sono ripetuti. -- Daniele www.fugamatematica.blogspot.com giusto! nel verso forse è perché non guardiamo le cose Quando non ci capiamo, ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
On 18/03/2014 16:53, Manlio Perillo wrote: 2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - < filippo.dalbo...@whiteready.com>: dalla lista row devo togliere alcune word in posizione variabile per costruire un' alta lista Per come funziona " or " in python questo sotto non va stamp=[] for word in row: if (word != ' ' , or word != 'pippo' or word != 'pluto'): stamp.append(word) print(stamp) qual' è la migliore soluzione? exclude = {'', 'pippo', 'pluto'} # soluzione veloce: print set(row) - exclude Ho dato una ripassata veloce al tipo di dato set; esattamente quale e' l'utilizzo pratico di set? ( a parte il bellissimo esempio di codice quotato ) Nel codice che leggo di solito mi sembra non averne mai visto l'utilizzo.. A parte gli operatori/metodi di unione, intersezione, etc., che comunque posso implementare tramite le liste, mi sembra che non aggiungano niente: posso vivere tranquillamente senza? :) Forse e' una questione di prestazioni? ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
On 19/03/2014 19:03, Balan Victor wrote: Ho visto che per esclude usate una lista. In presenza di tanti elementi nella lista exclude non è più efficiente usare un dictionary? Scusami, ma non ti seguo; puoi fare un esempio? ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
2014-03-19 18:03 GMT+00:00 Balan Victor : > Ho visto che per esclude usate una lista. In presenza di tanti elementi > nella lista exclude non è più efficiente usare un dictionary? > Un set [0] ancora meglio. -- Andrea [0 ]http://docs.python.org/2/library/sets.html ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
Ho visto che per esclude usate una lista. In presenza di tanti elementi nella lista exclude non è più efficiente usare un dictionary? ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
Il 18/03/2014 16:46, Filippo Dal Bosco - ha scritto: dalla lista row devo togliere alcune word in posizione variabile per costruire un' alta lista Per come funziona " or " in python questo sotto non va stamp=[] for word in row: if (word != ' ' , or word != 'pippo' or word != 'pluto'): stamp.append(word) print(stamp) qual' è la migliore soluzione? grazie parole_escluse = ["pippo", "pluto", "paperino"] filtro = lambda x: x not in parole_escuse row = filter(filtro, row) Rigorosamente non testato! :) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
+1 On 14-03-18 11:53 AM, Marco Beri wrote: > stamp = [word for word in row if word not in (' ', 'pippo', 'pluto')] -- Marco Gagliano ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
On 18/03/2014 17:25, Filippo Dal Bosco - wrote: Il giorno Tue, 18 Mar 2014 16:53:42 +0100 Marco Beri ha scritto: 2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - < filippo.dalbo...@whiteready.com>: [...] una lista che non contiene ' ', 'pippo' , 'pluto' Allora vuoi che tutte e tre le condizioni siano soddisfatte allo stesso tempo: quindi un and.. per esempio >>> l = [' ', 'pippo', 'pluto', 'peppa pig', 'mario', 'foo', 'homer'] >>> new_list = [] >>> for word in l: if word != ' ' and word != 'pippo' and word != 'pluto': print word, "oh yes!" new_list.append(word) else: print word, 'bye bye..' bye bye.. pippo bye bye.. pluto bye bye.. peppa pig oh yes! mario oh yes! foo oh yes! homer oh yes! >>> new_list ['peppa pig', 'mario', 'foo', 'homer'] Qualche altro esempio... >>> word == 'pippo' >>> word == ' ' or word == 'pippo' or word == 'pluto' True >>> word != ' ' or word != 'pippo' or word != 'pluto' True >>> word2 = 'mario' >>> word2 == ' ' or word == 'pippo' or word == 'pluto' True >>> word2 == ' ' or word2 == 'pippo' or word2 == 'pluto' False >>> word2 != ' ' or word2 != 'pippo' or word2 != 'pluto' True >>> word2 != ' ' and word2 != 'pippo' and word2 != 'pluto' True >>> not word == ' ' or not word == 'pippo' or not word == 'pluto' True >>> not word2 == ' ' or not word2 == 'pippo' or not word2 == 'pluto' True Ciao Lorenzo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
2014-03-18 17:25 GMT+01:00 Filippo Dal Bosco - < filippo.dalbo...@whiteready.com>: > or ( in logica "v" dal "vel" latino) dovrebbe significare per una > lista di oggetti : uno o più fino anche a tutti . > > Nel caso specifico : se word NON è ' ', 'pippo' , 'pluto' appendi il > suo contenuto a stamp > > Anche togliendo in python la "," non ottengo una lista che non contiene > ' ', 'pippo' , 'pluto' > La virgola andava tolta perché era un errore, non per far funzionare il resto. > io non sono un programmatore ma mi sembra di ricordare che in Dbase e > clipper ( vecchio dos) una serie di "or" otteneva questo effetto. > Sbagli: ho programmato molti anni in Clipper e ti posso garantire che l'OR funzionava come in Python :-) Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
Il giorno 18 marzo 2014 17:25, Filippo Dal Bosco - < filippo.dalbo...@whiteready.com> ha scritto: > Il giorno Tue, 18 Mar 2014 16:53:42 +0100 > Marco Beri ha scritto: > > > 2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - < > > filippo.dalbo...@whiteready.com>: > > > Or in python funziona come in tutto il resto del mondo. > > > > E come dovrebbe funzionare secondo te? > > or ( in logica "v" dal "vel" latino) dovrebbe significare per una > lista di oggetti : uno o più fino anche a tutti . > > Nel caso specifico : se word NON è ' ', 'pippo' , 'pluto' appendi il > suo contenuto a stamp > > Anche togliendo in python la "," non ottengo una lista che non contiene > ' ', 'pippo' , 'pluto' > > io non sono un programmatore ma mi sembra di ricordare che in Dbase e > clipper ( vecchio dos) una serie di "or" otteneva questo effetto. > > > > > -- > Filippo > ___ > > Non sono un programmatore python ma, se leggi bene quell'if è: se la parola non è "pippo" o non è "pluto" , la condizione è sempre vera. Perché una delle due è sempre vera. La più comoda sono le list comprension come diceva Marco. Altrimenti se usi l'or devi cercare l'uguaglianza, altrimenti usa l'operatore and con la diseguaglianza. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
Il giorno Tue, 18 Mar 2014 16:53:42 +0100 Marco Beri ha scritto: > 2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - < > filippo.dalbo...@whiteready.com>: > Or in python funziona come in tutto il resto del mondo. > > E come dovrebbe funzionare secondo te? or ( in logica "v" dal "vel" latino) dovrebbe significare per una lista di oggetti : uno o più fino anche a tutti . Nel caso specifico : se word NON è ' ', 'pippo' , 'pluto' appendi il suo contenuto a stamp Anche togliendo in python la "," non ottengo una lista che non contiene ' ', 'pippo' , 'pluto' io non sono un programmatore ma mi sembra di ricordare che in Dbase e clipper ( vecchio dos) una serie di "or" otteneva questo effetto. -- Filippo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - < filippo.dalbo...@whiteready.com>: > dalla lista row devo togliere alcune word in posizione variabile per > costruire un' alta lista > > Per come funziona " or " in python questo sotto non va > Or in python funziona come in tutto il resto del mondo. E come dovrebbe funzionare secondo te? stamp=[] > for word in row: > if (word != ' ' , or word != 'pippo' or word != 'pluto'): >stamp.append(word) > print(stamp) > > qual' è la migliore soluzione? > Togliere la virgola dopo ' ' Comunque il modo migliore è, a mio parere, usando la list comprehension: stamp = [word for word in row if word not in (' ', 'pippo', 'pluto')] Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
Il giorno 18 marzo 2014 16:46, Filippo Dal Bosco - < filippo.dalbo...@whiteready.com> ha scritto: > dalla lista row devo togliere alcune word in posizione variabile per > costruire un' alta lista > > Per come funziona " or " in python questo sotto non va > > stamp=[] > for word in row: > if (word != ' ' , or word != 'pippo' or word != 'pluto'): >stamp.append(word) > print(stamp) > mi sa che c'è un errore sintattico ...c'è una virgola che non mi convince dopo " word != ' ' " > qual' è la migliore soluzione? > a me piace questa: >>> source = ['ciao', 'pino', '', 'pippo'] >>> exclude = ['', 'pippo', 'pluto'] >>> [w for w in source if w not in exclude] ['ciao', 'pino'] ciao, Marco ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] or
2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - < filippo.dalbo...@whiteready.com>: > dalla lista row devo togliere alcune word in posizione variabile per > costruire un' alta lista > > Per come funziona " or " in python questo sotto non va > > stamp=[] > for word in row: > if (word != ' ' , or word != 'pippo' or word != 'pluto'): >stamp.append(word) > print(stamp) > > qual' è la migliore soluzione? > > exclude = {'', 'pippo', 'pluto'} # soluzione veloce: print set(row) - exclude # oppure: for word in row: if word not in exclude: stamp.append(word) Questo se ho capito correttamente quello che vuoi fare Ciao Manlio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python