PDA

View Full Version : Python, ordinare insieme


VBProgramming
17-11-2007, 20:07
Ho, ad esempio:
a=set('pianta')
b=set('aeiou')
c=a-b
print c
l'output sarà:
set(['p', 't', 'n'])

io voglio ordinare quei p,t e n nell'ordine in cui erano nella parola "pianta" (cioè prima la p, poi la n e infine la t) Come faccio?

^TiGeRShArK^
17-11-2007, 20:46
Ho, ad esempio:
a=set('pianta')
b=set('aeiou')
c=a-b
print c
l'output sarà:
set(['p', 't', 'n'])

io voglio ordinare quei p,t e n nell'ordine in cui erano nella parola "pianta" (cioè prima la p, poi la n e infine la t) Come faccio?

Non puoi usando i Set.
Gli insiemi sono per definizione non ordinati.
per fare questo devi usare le collections mi sa.

^TiGeRShArK^
17-11-2007, 21:00
def ch(a):
return a

a = map(ch, 'pianta')
b = map(ch, 'aeiou')
for char in b:
if a.count(char) != 0:
a.remove(char)
print a

Questo funziona se viene rispettata la definizione di insieme, ovvero ogni insieme può contenere una sola instanza di un elemento.
"pianta" contiene due "a" e quindi questo scriptino rimuove giustamente solo la prima.
Lascio a te il compito di modificarlo in modo da rimuovere anche la seconda :p

P.S. così ad occhio dovrebbe bastare solo un'altra linea di codice ;)

marco.r
18-11-2007, 01:21
Ho, ad esempio:
a=set('pianta')
b=set('aeiou')
c=a-b
print c
l'output sarà:
set(['p', 't', 'n'])

io voglio ordinare quei p,t e n nell'ordine in cui erano nella parola "pianta" (cioè prima la p, poi la n e infine la t) Come faccio?

Puoi usare le liste:

a='pianta'
b='aeiou'
c = [ ch for ch in a if ch not in b ]
print c

Ti stampa ["p","n","t"]