你有一个数字列表,你想过滤掉那些包含唯一数字的数字,即每个数字在数字中只能出现一次。
正面例子:
- 985
- 58293.6
- 0.1246
负面例子:
- 9585(5 出现两次)
- 58293.666(6出现3次)
- 0.12461(1 出现两次)
你会怎么做?我自己的想法是将每个数字转换为字符串,然后检查由字符串字符组成的集合的大小是否等于字符串的长度。像这样的东西:
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
有没有办法在不先将整数转换为字符串的情况下做到这一点?