Si dispone di un elenco di numeri e si desidera filtrare quei numeri che contengono cifre univoche, vale a dire ogni cifra può verificarsi solo una volta nel numero.Come filtrare i numeri che contengono cifre univoche?
Esempi positivi:
- 58293,6
- esempi 0,1246
negative:
- 9585 (5 si verifica due volte)
- 58293.666 (6 si verifica tre volte)
- 0,12461 (1 si verifica due volte)
Come hai fatto? La mia idea è di convertire ogni numero in una stringa e quindi verificare se la dimensione del set ricavata dai caratteri della stringa è uguale alla lunghezza della stringa. Qualcosa del genere:
def uniques(numbers):
for number in numbers:
str_number = str(number)
if len(set(str_number)) == len(str_number):
yield number
for i in uniques(xrange(1000, 1050)):
print i
1023
1024
1025
1026
1027
1028
1029
1032
1034
1035
1036
1037
1038
1039
1042
1043
1045
1046
1047
1048
1049
C'è un modo per farlo senza prima convertire gli interi in stringhe?
Non riconvertirlo. Prendi un'altra variabile per la versione con stringhe del numero. – Matthias
Specialmente se il tuo input contiene 'float's ... –
A parte ciò, penso che il tuo approccio sia semplice e facile da capire. Ci andrei. –