为了账号安全,请及时绑定邮箱和手机立即绑定

如何从列表中分离 cam1,2,3,4,5,6 第一个图像

如何从列表中分离 cam1,2,3,4,5,6 第一个图像

噜噜哒 2021-09-01 14:42:20
lst = ['Cam218-10-03_16-05-21-54.jpg',            'Cam318-10-03_17-04-21-54.jpg',       'Cam418-10-03_16-04-21-54.jpg',         'Cam218-10-02_16-05-21-54.jpg',       'Cam318-10-02_17-04-21-54.jpg',         'Cam418-10-02_16-04-21-54.jpg',       'Cam218-10-02_16-04-08-31.jpg',         'Cam318-10-02_16-04-08-30.jpg',        'Cam418-10-02_16-04-08-30.jpg',         'Cam518-10-02_16-04-08-35.jpg',       'Cam618-10-02_16-04-08-36.jpg',         'Cam118-10-02_16-04-09-33.jpg',        'Cam218-10-02_16-04-09-33.jpg',         'Cam318-10-02_16-04-09-33.jpg',        'Cam418-10-02_16-04-09-33.jpg',         'Cam518-10-02_16-04-09-33.jpg',       'Cam618-10-02_16-04-09-33.jpg',         'Cam118-10-02_16-04-11-53.jpg',        'Cam218-10-02_16-04-11-53.jpg',         'Cam318-10-02_16-04-11-53.jpg',        'Cam418-10-02_16-04-08-30.jpg',         'Cam118-10-02_16-04-08-31.jpg',        'Cam518-10-02_16-04-11-53.jpg',         'Cam118-10-02_16-04-11-53.jpg']从这个列表中我想要输出:['Cam118-10-02_16-04-08-31.jpg', 'Cam218-10-02_16-04-08-31.jpg', 'Cam318-10-02_16-04-08-30.jpg',  'Cam418-10-02_16-04-08-30.jpg', 'Cam518-10-02_16-04-08-35.jpg', 'Cam618-10-02_16-04-08-36.jpg'] 通过使用 Python。有人可以帮我吗?
查看完整描述

2 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

与itertools.groupby- O(n*log(n))


>>> from itertools import groupby

>>> [next(g) for _, g in groupby(sorted(lst), key=lambda cam: cam.partition('-')[0])]

['Cam118-10-02_16-04-08-31.jpg',

 'Cam218-10-02_16-04-08-31.jpg',

 'Cam318-10-02_16-04-08-30.jpg',

 'Cam418-10-02_16-04-08-30.jpg',

 'Cam518-10-02_16-04-08-35.jpg',

 'Cam618-10-02_16-04-08-36.jpg']

手动跟踪重复项(输出未排序,但可能对其他读者有用)- O(n)


>>> seen = set()

>>> result = []

>>> 

>>> for cam in lst:

...:    model, *_ = cam.partition('-')

...:    if model not in seen:

...:        result.append(cam)

...:        seen.add(model)

...:        

>>> result

['Cam218-10-03_16-05-21-54.jpg',

 'Cam318-10-03_17-04-21-54.jpg',

 'Cam418-10-03_16-04-21-54.jpg',

 'Cam518-10-02_16-04-08-35.jpg',

 'Cam618-10-02_16-04-08-36.jpg',

 'Cam118-10-02_16-04-09-33.jpg']


查看完整回答
反对 回复 2021-09-01
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

您可以在对列表进行排序后设置 if 条件来检查照片标签的出现


list.sort()

i = 1

for item in list:

    if(item[3]==str(i)):

        i=i+1

        print(item)

        continue

结果是


Cam118-10-02_16-04-08-31.jpg

Cam218-10-02_16-04-08-31.jpg

Cam318-10-02_16-04-08-30.jpg

Cam418-10-02_16-04-08-30.jpg

Cam518-10-02_16-04-08-35.jpg

Cam618-10-02_16-04-08-36.jpg

如果你想在不考虑其升序的情况下获得第一次出现的项目,删除 list.sort() 将解决这个问题。


查看完整回答
反对 回复 2021-09-01
  • 2 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信