2012-12-05 5 views
-1

목록의 항목을 다른 목록의 항목과 연결해야합니다. 필자의 경우 항목은 문자열 (경로가 더 정확하게)입니다. 연결이 끝나면 연결 결과 가능한 모든 항목이 포함 된 목록을 얻고 싶습니다.Python - 목록의 항목을 다른 목록의 항목과 연결하기

예 :

list1 = ['Library/FolderA/', 'Library/FolderB/', 'Library/FolderC/'] 

list2 = ['FileA', 'FileB'] 

내가 이런 식으로 목록을 가져올 :

[ 
    'Library/FolderA/FileA', 
    'Library/FolderA/FileB', 
    'Library/FolderB/FileA', 
    'Library/FolderB/FileB', 
    'Library/FolderC/FileA', 
    'Library/FolderC/FileB' 
] 

감사합니다!

>>> [d + f for d in list1 for f in list2] 
['Library/FolderA/FileA', 'Library/FolderA/FileB', 'Library/FolderB/FileA', 'Library/FolderB/FileB', 'Library/FolderC/FileA', 'Library/FolderC/FileB'] 

당신이 생각하는 대신 간단한 연결의 os.path.join()을 사용할 수 있습니다 :

답변

1

당신은 지능형리스트를 사용할 수 있습니다. 좀더 이식성 (아마도 견고)

5
In [11]: [d+f for (d,f) in itertools.product(list1, list2)] 
Out[11]: 
['Library/FolderA/FileA', 
'Library/FolderA/FileB', 
'Library/FolderB/FileA', 
'Library/FolderB/FileB', 
'Library/FolderC/FileA', 
'Library/FolderC/FileB'] 

또는 :

In [16]: [os.path.join(*p) for p in itertools.product(list1, list2)] 
Out[16]: 
['Library/FolderA/FileA', 
'Library/FolderA/FileB', 
'Library/FolderB/FileA', 
'Library/FolderB/FileB', 
'Library/FolderC/FileA', 
'Library/FolderC/FileB'] 
+0

'os.path.join을 사용하는 것이 더 좋을 수도()'여기. –

+0

@ 라 티웨어 : 이미 완료되었습니다 :) – NPE

0

가 내장 itertools 모듈이위한 product() 함수를 정의

import itertools 
result = itertools.product(list1, list2) 
0

for 루프 할 수있다 쉽게 :

my_list, combo = [], '' 
list1 = ['Library/FolderA/', 'Library/FolderB/', 'Library/FolderC/'] 
list2 = ['FileA', 'FileB'] 
for x in list1: 
    for y in list2: 
     combo = x + y 
     my_list.append(combo) 
return my_list 

또한 바로 인쇄 할 수 있습니다 :

list1 = ['Library/FolderA/', 'Library/FolderB/', 'Library/FolderC/'] 
list2 = ['FileA', 'FileB'] 
for x in list1: 
    for y in list2: 
     print str(x + y) 
관련 문제