简体   繁体   English

Python-将列表中的项目与另一个列表中的项目连接

[英]Python - Concatenate an item from a list with an item from another list

I need to concatenate an item from a list with an item from another list. 我需要将一个列表中的项目与另一个列表中的项目连接起来。 In my case the item is a string (a path more exactly). 在我的情况下,该项目是一个字符串(更确切地说是一个路径)。 After the concatenation I want to obtain a list with all the possible items resulted from concatenation. 串联后,我想获取一个列表,其中列出了所有由于串联而导致的可能情况。

Example: 例:

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

list2 = ['FileA', 'FileB']

I want to obtain a list like this: 我想获得这样的列表:

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

Thank you! 谢谢!

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

or, slightly more portably (and perhaps robustly): 或者,更可移植(可能更健壮):

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

You can use a list comprehension: 您可以使用列表理解:

>>> [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']

You may want to use os.path.join() instead of simple concatenation though. 您可能希望使用os.path.join()代替简单的串联。

The built-in itertools module defines a product() function for this: 内置的itertools模块为此定义了一个product()函数:

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

The for loop can do this easily: 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

You can also just print them: 您也可以只打印它们:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM