[英]Iterate over two lists and combining items
I want to iterate over and combine items from two lists. 我想遍历并合并两个列表中的项目。 but it has to start with item 1 from list 1 and iterate through and combine with all items in list 2. 但它必须从列表1中的项目1开始,然后迭代并与列表2中的所有项目合并。
partner_paths = ["/partner/path/1", "/partner/path/2", "/partner/path/3"]
scr_dirs = ["/dir1", "/dir2", "/dir3"]
for p_path, s_dir in zip(partner_paths, scr_dirs):
fpath = p_path + s_dir
print fpath
What I want is: 我想要的是:
"/partner/path/1/dir1" "/partner/path/1/dir2" "/partner/path/1/dir3" “ / partner / path / 1 / dir1”“ / partner / path / 1 / dir2”“ / partner / path / 1 / dir3”
"/partner/path/2/dir1" "/partner/path/2/dir2" "/partner/path/2/dir3" “ /伙伴/路径/ 2 / dir1”“ /伙伴/路径/ 2 / dir2”“ /伙伴/路径/ 2 / dir3”
"/partner/path/3/dir1" "/partner/path/3/dir2" "/partner/path/3/dir3" “ /伙伴/路径/ 3 / dir1”“ /伙伴/路径/ 3 / dir2”“ /伙伴/路径/ 3 / dir3”
You can use itertools.product
with a list comprehension if you need the result in a list: 如果需要列表中的结果,可以将itertools.product
与列表理解一起使用:
from itertools import product
[d + f for d, f in product(partner_paths, scr_dirs)]
#['/partner/path/1/dir1',
# '/partner/path/1/dir2',
# '/partner/path/1/dir3',
# '/partner/path/2/dir1',
# '/partner/path/2/dir2',
# '/partner/path/2/dir3',
# '/partner/path/3/dir1',
# '/partner/path/3/dir2',
# '/partner/path/3/dir3']
Or as @vaultah suggested, this should work as well: 或如@vaultah所建议的,这也应该工作:
[p + d for p in partner_paths for d in scr_dirs]
Is double for
loop out of the question? Double for
循环是不可能的吗?
for p_path in partner_paths:
for s_dir in scr_dirs:
fpath = p_path + s_dir
print fpath
If you wanted a 2D output, this code should work as well: 如果您想要2D输出,此代码也应该工作:
final_output = []
for p_path in partner_paths:
paths = []
for s_dir in scr_dirs:
fpath = p_path + s_dir
paths.append(fpath)
output_list.append(paths)
print (final_output)
partner_paths = ["/partner/path/1", "/partner/path/2", "/partner/path/3"]
scr_dirs = ["/dir1", "/dir2", "/dir3"]
fpath = []
for p_path in partner_paths:
for s_dir in scr_dirs:
fpath.append(p_path + s_dir)
print(fpath)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.