3 回答
TA贡献1869条经验 获得超4个赞
改进的版本:
b_li = set()
output_list = []
b_li_add = b_li.add
output_list_append = output_list.append
for x in li:
s = (x[0], x[2])
if s not in b_li:
b_li_add(s)
output_list_append(x)
更改为:
使用
set()
的b_li
,这使得查找更快。转
s
成元组,因为没有必要存储唯一的第一和第三元素列表。减少的函数查找也可以加快代码的速度。
TA贡献1898条经验 获得超8个赞
使用一组存储可见的元素。那是更快的:
seen = set()
res = []
for entry in li:
cond = (entry[0], entry[2])
if cond not in seen:
res.append(entry)
seen.add(cond)
[[2, 4, 5], [1, 3, 5]]
添加
同样,花费在思考告诉变量名称上的时间通常是合理的。通常,作为一次性解决方案的第一件事要比预期持续更长的时间。
TA贡献1862条经验 获得超6个赞
利用OrderedDict字典具有唯一键的事实。
>>> from collections import OrderedDict
>>> li=[ [2,4,5], [1,3,5], [1,6,5] ]
>>> OrderedDict(((x[0], x[2]), x) for x in reversed(li)).values()
[[1, 3, 5], [2, 4, 5]]
添加回答
举报