例如:输入
9876673
返回:
37689
解法1
分析:set()集合虽然有去重功能,但是set的元素是无须存放的,所以存入的元素顺序可能与读取的顺序不一致,所以不能使用set
dict字典在设置值时,可以输入重复的key值,但是最终key值会去重,每个只保留一个值,所以利用dict的功能
def func(data): list_data =[i for i in(data)][::-1] #拆分为list并倒叙排序 print(list_data) # new_list_data =list(set(list_data)) #不能使用set去重,因为去重后,顺序可能改变 #通过dict的key值也会自动去重的功能 dict_data ={} for one in list_data: dict_data[one] = 0 new_list_data =dict_data.keys() print(eval(''.join(new_list_data))) #eval()可以将string数据去引号,返回内部的数据
解法2: 参考的一个大佬的,哎,其实上面自己想复杂了
直接对string进行拆分,重新拼接,在拼接的是否判断一下即可
上菜:
def func1(data): #data是input()接收的,所以data是带双引号的int new_string ='' #直接利用列表推导式对字符串进行拆分 for i in [one for one in data][::-1]: #先拆分,在倒序。此时没有元素还是string类型 if i not in new_string: #如果不存在,在拼接进去 new_string += i print(eval(new_string)) #最后要通过eval()将string转为int