请编写一个算法，找到列表中第二小的数字，列表中可能会有重复数字。


[5, 2, 3, 2, 4, 1, 6]
可以先用set函数将列表元素去重，然后进行排序，返回第二个元素即可。

Python 代码如下：

```
def second_smallest(numbers):
    unique_numbers = list(set(numbers))
    unique_numbers.sort()
    return unique_numbers[1]

numbers = [5, 2, 3, 2, 4, 1, 6]
print(second_smallest(numbers))
```

输出为：

```
2
```