我需要创建一个函数来返回第二小的唯一数字,这意味着如果
list1 = [5,4,3,2,2,1]
,我需要返回 3,因为 2 不是唯一的。
我试过:
def second(list1):
result = sorted(list1)[1]
return result
和
def second(list1):
result = list(set((list1)))
return result
但他们都返回 2。
编辑1:
谢谢大家!我使用这个最终代码让它工作:
def second(list1):
b = [i for i in list1 if list1.count(i) == 1]
b.sort()
result = sorted(b)[1]
return result
编辑 2:
好吧,伙计们……真的很困惑。我的教授刚刚告诉我,如果 list1 = [1,1,2,3,4]
,它应该返回 2,因为 2 仍然是第二小的数字,如果 list1 = [1 ,2,2,3,4]
,它应该返回 3。
如果 list1 = [1,1,2,3,4]
,eidt1 中的代码将无法工作。
我想我需要做类似的事情:
如果 list1[0] 位置有重复数字,则删除所有重复数字并返回第二个数字。 否则,如果重复数字位置不在 list1[0] 中,则只需使用 EDIT1 中的代码。
最佳答案
不使用任何花哨的东西,为什么不直接获取唯一列表,对其进行排序,然后获取第二个列表项?
a = [5,4,3,2,2,1] #second smallest is 3
b = [i for i in a if a.count(i) == 1]
b.sort()
>>>b[1]
3
a = [5,4,4,3,3,2,2,1] #second smallest is 5
b = [i for i in a if a.count(i) == 1]
b.sort()
>>> b[1]
5
显然,您应该测试您的列表中至少有两个唯一数字。换句话说,确保 b
的长度至少为 2。
关于python - 如何在列表中找到第二小的 UNIQUE 数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34147836/