** Python 列表查找重复元素排序后排序**
问题如下
我测试的结果如下
请问lk排序之后剩none是哪里的问题
print(lk)
lk.sort()
print(lk)
这样写
问题解答:
针对问题标题中的关于Python列表查找重复元素排序后剩下None的问题,问题出现的原因是在代码中存在将列表中的元素转换为整数的错误处理方式。具体来说,在代码中使用int()
函数将列表中的元素转换为整数时,如果元素是None,会抛出TypeError
的异常。而在排序过程中,由于None无法与整数进行比较,会导致排序结果中出现None。
为了解决这个问题,我们只需要在转换之前判断元素是否为None即可。
下面是样例代码的修改版,具体修改点已经用注释标出:
def digital_computation(num_list):
new_numbers = []
for n in num_list:
# 添加对元素是否为None的判断
if n is not None:
new_numbers.append(int(n))
num_1 = new_numbers
num_2 = []
num_1.sort()
for i in num_1:
num = int(i) + 1
num_2.append(num)
list3 = list(set(num_2).difference(set(num_1)))
list3.sort()
if list3:
return list3[0]
else:
# 添加对num_1是否为空列表的判断
if num_1:
num = int(num_1[-1]) + 1
else:
num = 1
return num
num_list = [1, 2, 3, None, 5, 6, 7]
num_list1 = [1, 2, 4, 5, 6, 7]
num_list2 = [1, 2, 3, 4, 6, 7]
num = digital_computation(num_list)
num1 = digital_computation(num_list1)
num2 = digital_computation(num_list2)
print(num)
print(num1)
print(num2)
以上代码会在对列表查找重复元素并排序后,正确地输出结果。
希望以上解答对您有帮助,如果您还有任何疑问,请随时追问。