Stringhe in python
Stringhe in python
Sto lavorando su un programma, in Python, ed ho un piccolo problema da risolvere: nell'output del programma, ottengo delle stringhe come ad esempio "1,2" e "2,1". Non corrispondono ai numeri 1,2 e 2,1, ma sono stringhe che indicano due eventi di nome 1 e 2: di conseguenza "1,2" e "2,1" per me sono esattamente la stessa cosa, e vorrei riuscire ad eliminare nell'output le stringhe che sono una sorta di permutazione di uno degli output ma se mi metto a generare tutte le permutazioni, per ogni lavoro con sequenze di una decina di numeri avrei milioni di permutazioni :P Di conseguenza vorrei fare una sorta di index di quei numeri nelle stringhe, per poi confrontarle ed eliminare quelle identiche, senza dimenticare che potrei avere numeri a più cifre in ogni stringa. Avete consigli? grazie in anticipo 
- Adaron
- Scoppiettante Seguace

- Messaggi: 982
- Iscrizione: giovedì 12 ottobre 2006, 23:53
- Località: Savona
Re: Stringhe in python
approccio teorico:
potresti provare a creare un array degli eventi vuoto. alla generazione dell'evento, controlli che questo non sia già presente nell'array, in caso contrario lo inserisci.
potresti provare a creare un array degli eventi vuoto. alla generazione dell'evento, controlli che questo non sia già presente nell'array, in caso contrario lo inserisci.
[center]Io sono in te, tu sei in Me. Noi siamo Uno
io sono in te, tu sei in me. Noi siamo Uno.
Tu sei in me, io sono in Te. Noi siamo Uno.
io sono in te, tu sei in me. Noi siamo Uno.
Tu sei in me, io sono in Te. Noi siamo Uno.
Re: Stringhe in python
a me viene soltanto in mente di leggere i caratteri nelle stringhe, ed aggiungere il num in array appena becca la virgola ovviamente forzando quello che legge ad int, dopodichè confrontare gli array.. ma mi sembra un tantino lungo come procedimento
c'è qualche idea migliore? o qualcosa di pre-costruito che lo fa?
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Stringhe in python
non so se ho capito bene, dici una cosa del genere?
il cui risultato è:parola1 = set(raw_input("prima parola: "))
parola2 = set(raw_input("seconda parola: "))
print "Lettere in comune: " + '-'.join(parola1.intersection(parola2))
marco@marco-desktop:~/Desktop$ python proes2.py
prima parola: laprimaparolaparola
seconda parola: lasecondaparolaparola
Lettere in comune: a-p-r-l-o
marco@marco-desktop:~/Desktop$
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Stringhe in python
esatto, però avrei dei problemini con numeri più grandi di 9, no? non legge 10 come 1 e 0?
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Stringhe in python
così?
il cui risultato è:lista1=['1','2','33','44','12','3','444','56']
lista2=['1','112','33','144','1112','993','4494','56']
parola1 = set(lista1)
parola2 = set(lista2)
print "numeri in comune: " + '-'.join(parola1.intersection(parola2))
marco@marco-desktop:~/Desktop$ python proes2.py
numeri in comune: 33-1-56
marco@marco-desktop:~/Desktop$
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Stringhe in python
In sostanza ho un output così:
totale=["1,2","2,1","3,1","3,2","2,3"]
Dove non sono numeri con la virgola, ma sequenze di eventi ossia 1 e 2, 2 e 1, 3 e 1, ecc ecc. e quindi il primo ed il secondo valore per me sono uguali, e dovrei levarne uno. Stavo lavorando sulla lettura di ogni singolo valore, e sono arrivato ad avere un array così:
tot2=[1,2,2,1,3,1,3,2,2,3]
Qui dovrei effettuare un'ulteriore selezione, creando n array numerici per ogni n stringa presente nella prima lista, ordinare ogni valore e confrontarli. L'unica idea che ora mi viene in mente è il dizionario, ma prende stringhe. Che faccio?
totale=["1,2","2,1","3,1","3,2","2,3"]
Dove non sono numeri con la virgola, ma sequenze di eventi ossia 1 e 2, 2 e 1, 3 e 1, ecc ecc. e quindi il primo ed il secondo valore per me sono uguali, e dovrei levarne uno. Stavo lavorando sulla lettura di ogni singolo valore, e sono arrivato ad avere un array così:
tot2=[1,2,2,1,3,1,3,2,2,3]
Qui dovrei effettuare un'ulteriore selezione, creando n array numerici per ogni n stringa presente nella prima lista, ordinare ogni valore e confrontarli. L'unica idea che ora mi viene in mente è il dizionario, ma prende stringhe. Che faccio?
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Stringhe in python
sai che... non ho capito bene cosa devi fare!
Mi fai un esempio di come dovrebbe essere il risultato che vuoi ottenere?
Mi fai un esempio di come dovrebbe essere il risultato che vuoi ottenere?
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Stringhe in python
in sostanza ho un programma che come output da dei numeri in stringhe, con un formato del tipo "1,2,3,4". Può dare diverse stringhe, tutte incluse in una lista. Se in questa lista trovo due sequenze del tipo "1,2,3" e "3,2,1" per me essendo la virgola un "and" corrispondono allo stesso risultato: ossia 1,2 e 3, oppure 3,2 e 1, la stessa cosa, e quindi devo eliminare una delle due stringhe. Ecco perchè mi veniva in mente di leggere ogni stringa ed accumulare i valori che ci sono in una lista, dopodichè fare lista.sort() appena becca la virgola, fare il ciclo degli elementi della lista e aggiungerli tutti ad una stringa, ora ordinata in modo giusto, togliere la vecchia, e confrontare con le restanti..
esempio:
output=["1,2", "2,1"] diventa output=["1,2","1,2"] ed ora se il primo elemento è uguale al secondo, lo toglie dalla lista. Un modo più breve esiste? sempre considerando che potrei avere numeri più grandi di 10.
esempio:
output=["1,2", "2,1"] diventa output=["1,2","1,2"] ed ora se il primo elemento è uguale al secondo, lo toglie dalla lista. Un modo più breve esiste? sempre considerando che potrei avere numeri più grandi di 10.
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Stringhe in python
lista.sort() ordina gli elementi *della* lista, e non funziona con le stringhe, che sono elementi immutabili. Per fare quello dovresti:BoboVieri ha scritto: Se in questa lista trovo due sequenze del tipo "1,2,3" e "3,2,1" per me essendo la virgola un "and" corrispondono allo stesso risultato: ossia 1,2 e 3, oppure 3,2 e 1, la stessa cosa, e quindi devo eliminare una delle due stringhe. Ecco perchè mi veniva in mente di leggere ogni stringa ed accumulare i valori che ci sono in una lista, dopodichè fare lista.sort() appena becca la virgola,
il cui risultato è:import string
lista=["1,2", "2,1","10,12,11,2"]
lista2=[]
for x in lista:
a=string.split(x,",")
lista2.append(a)
print lista2
EDIT: ho tolto un [ ] alla riga 5marco@marco-desktop:~/Desktop$ python 2.py
[['1', '2'], ['2', '1'], ['10', '12', '11', '2']]
Ultima modifica di crap0101 il venerdì 29 febbraio 2008, 17:33, modificato 1 volta in totale.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Stringhe in python
eccolo completo, mettendo anche in ordine i numeri
Codice: Seleziona tutto
import string
lista=["1,2", "2,1","10,12,11,2"]
lista2=[]
for x in lista:
a=string.split(x,",")
lista2.append(a)
for x in lista2:
C=0
for y in x:
z=int(y)
x[C]=z
C+=1
for x in lista2:x.sort()
print "lista2 ordinata: ",lista2
Ultima modifica di crap0101 il sabato 1 marzo 2008, 0:38, modificato 1 volta in totale.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti