2012-12-05 135 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' 
] 

谢谢!

回答

1

您可以使用列表理解:

>>> [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(),而不是简单的串联,虽然。

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

@Lattyware:已经完成:) – 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) 
相关问题