Оставить один элемент в списке Python и распечатать пути - PullRequest
0 голосов
/ 25 декабря 2011

Учитывая большое количество объектов исследования ("SUBJ"), мне нужно создать блоки абсолютных путей (в виде строк), которые бы каждый раз оставляли один объект.

Например, мне нужно что-то вроде:

/ путь / к / данным / SUBJ02
/ путь / к / данным / SUBJ03
/ путь / к / данным / SUBJ04
/ путь / к / данным / SUBJ05

/ путь / к / данным / SUBJ01
/ путь / к / данным / SUBJ03
/ путь / к / данным / SUBJ04
/ путь / к / данным / SUBJ05

и т.д ...

Дано:

x = ["SUBJ01","SUBJ02","SUBJ03","SUBJ04","SUBJ05"]
loso = ["SUBJ01","SUBJ02","SUBJ03","SUBJ04","SUBJ05"]

def returnLoso(x,loso):
     x1 = [(z) for (z) in x if z !=loso]
     print x1

Результат моего интерактивного сеанса примерно такой:

In [1]: for i, v in enumerate(loso):
   .....:     returnLoso(x,v)
   .....:     
['SUBJ02', 'SUBJ03', 'SUBJ04', 'SUBJ05']
['SUBJ01', 'SUBJ03', 'SUBJ04', 'SUBJ05']
['SUBJ01', 'SUBJ02', 'SUBJ04', 'SUBJ05']
['SUBJ01', 'SUBJ02', 'SUBJ03', 'SUBJ05']
['SUBJ01', 'SUBJ02', 'SUBJ03', 'SUBJ04']

Пока все хорошо.

Мой вопрос: как я могу подключить их к моим путям к файлам, чтобы получить результат, подобный приведенному выше? Мне нужно подключить каждую «позицию» в массиве в отдельную текстовую строку. Заранее спасибо,

1 Ответ

2 голосов
/ 25 декабря 2011

Как насчет

directory = "c:\\..."
import os.path
paths = [os.path.join(directory, filename) for filename in filenames]

?

Кстати, вы можете сохранить повторы имен ваших субъектов с помощью функции, такой как

def loo(x):
    return [[el for el in x if el!=x[i]] for i in range(len(x))]

Обновите все вместе:

import os.path

def loo(x):
    return [[el for el in x if el!=x[i]] for i in range(len(x))]

def p(subjects, directory):
    l = loo(subjects)
    for group in l:
        for subj in group:
            print os.path.join(directory, subj)
        print

p(['S1','S2','S3','S4','S5'], 'c:\\')

Попробуйте запустить это, в результате

c:\S2
c:\S3
c:\S4
c:\S5

c:\S1
c:\S3
c:\S4
c:\S5

c:\S1
c:\S2
c:\S4
c:\S5

c:\S1
c:\S2
c:\S3
c:\S5

c:\S1
c:\S2
c:\S3
c:\S4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...