如何从列表中分离cam1,2,3,4,5,6首张图像

时间:2018-11-29 06:22:12

标签: python string python-3.x list

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 个答案:

答案 0 :(得分:1)

使用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']

答案 1 :(得分:0)

您可以在对列表进行排序后确定是否有条件检查photo标签的出现情况

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()将解决该问题。