python - 列出独特的元素,保持顺序。只记住刚刚看到的元素
问题描述
我有一个(嵌套元组的)列表,我想消除与元素具有相同第一项和最后一项的嵌套元组, 保留顺序:
my_list = [('0.5', '00', '0-0'),
('0.75', '02', '0-0'),
('0.5', '02', '0-0'),
('0.75', '02', '0-0'),
('0.75', '03', '0-0'),
('0.75', '04', '0-0'),
('0.75', '05', '0-0'),
('0.75', '06', '0-0'),
('0.75', '07', '0-0'),
('0.75', '08', '0-0'),
('0.75', '09', '0-0'),
('0.75', '10', '0-0'),
('0.75', '11', '0-0'),
('0.75', '13', '0-0'),
('0.75', '14', '0-0'),
('0.5', '15', '0-0'),
('0.75', '15', '0-0'),
('0.5', '15', '0-0')]
这是我需要的输出:
[('0.5', '00', '0-0'),
('0.75', '02', '0-0'),
('0.5', '02', '0-0'),
('0.75', '02', '0-0'),
('0.5', '15', '0-0'),
('0.75', '15', '0-0'),
('0.5', '15', '0-0')]
我试过这个但没有奏效:
from more_itertools import unique_justseen
list(unique_justseen(my_list))
解决方案
在追加之前检查元素与先前追加的元素:
out = []
for el in my_list:
if not out or el[0] != out[-1][0] or el[-1] != out[-1][-1]:
out.append(el)
print(out)
给
[('0.5', '00', '0-0'), ('0.75', '02', '0-0'), ('0.5', '02', '0-0'), ('0.75', '02', '0-0'), ('0.5', '15', '0-0'), ('0.75', '15', '0-0'), ('0.5', '15', '0-0')]
推荐阅读
- python - 这里超出时间限制的原因是什么
- c# - 使用 IdentityServer4 作为类库而不是托管解决方案
- artificial-intelligence - godot AI pong 动作笨重
- php - 编辑表单中的 Laravel Orchid 数据绑定
- amazon-web-services - Amazon Transcribe 和 Golang 开发工具包 BadRequestException
- amazon-web-services - AWS ALB/Cloudfront 文件上传 - 返回状态码 413
- javascript - 调用缺少的对象属性时出现javascript打印错误
- powershell - 重新格式化 `GCI IIS:\SSLBindings` 以避免截断
- python - TensorFlow:张量形状与 Numpy 数组形状
- python - 如何匹配 URL 中前两个斜杠之间的内容?