как отделить cam1,2,3,4,5,6 первые изображения из списка - PullRequest
0 голосов
/ 29 ноября 2018
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 голосов
/ 29 ноября 2018

вы можете сделать, если условие проверять наличие тега 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 () должно решить эту проблему.

0 голосов
/ 29 ноября 2018

С 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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...