在使用DeepSeek实现编程时也可以告知大模型限定使用的库和工具,也就是说,告知模型是否使用指定的库,或者禁止使用什么库。
提示语示例:“请使用Python标准库编写一个函数,实现对一个数据列中的元素进行去重操作,不允许使用set()函数。”
DeepSeek输出代码示例:
def unique_elements(iterable):
"""
对可迭代对象中的元素进行去重,保持原始顺序
参数:
iterable: 可迭代对象(列表、元组等)
返回:
list: 包含唯一元素的新列表,保持原始顺序
"""
seen = []
for item in iterable:
if item not in seen:
seen.append(item)
return seen
实现说明:
-
时间复杂度:
-
平均情况:O(n²)
-
最坏情况:O(n²)
-
由于使用列表的
in
操作(O(n))和append
操作(O(1)),整体效率低于set()
-
-
空间复杂度:
-
O(n),需要额外空间存储结果列表
-
-
特性:
-
保持元素原始顺序
-
支持任何可迭代对象
-
处理任意可哈希元素
-
纯Python实现,不依赖外部库
-
-
使用示例:
# 示例1:基本使用 data = [3, 5, 2, 3, 8, 5] print(unique_elements(data)) # 输出:[3, 5, 2, 8] # 示例2:保持顺序 data = ['apple', 'banana', 'apple', 'orange', 'banana'] print(unique_elements(data)) # 输出:['apple', 'banana', 'orange'] # 示例3:处理元组 data = (1, 2, 2, 3, 1, 4) print(unique_elements(data)) # 输出:[1, 2, 3, 4]
-
优化建议:
如果需要更高性能的版本(牺牲内存效率),可以使用字典:def unique_elements_optimized(iterable): """使用字典优化去重性能""" return list(dict.fromkeys(iterable))
-
边界情况处理:
-
空输入返回空列表
-
支持None值
-
处理所有可哈希类型
-
-
测试用例:
assert unique_elements([]) == [] assert unique_elements([1, 1, 1]) == [1] assert unique_elements([None, 1, None]) == [None, 1] assert unique_elements(['a', 'b', 'a', 'c']) == ['a', 'b', 'c'] assert unique_elements([3, 2, 1, 2, 3]) == [3, 2, 1]
这个实现虽然性能不如
set()
,但完全符合题目要求,且保持了代码的简洁性和可读性。对于小型数据集或顺序敏感的场景,这是一个合适的解决方案。