Python 从两个列表创建目录

Python 从两个列表创建目录,python,for-loop,itertools,Python,For Loop,Itertools,我有下面的命名为tuple和列表: from collections import namedtuple firefoxprofile = namedtuple("Profile", ["Name", "Path", "isRelative", "Default"]) jb = firefoxprofile(Name='Jason', Path='Profiles/er5rtak4.Jason', isRelative='1', Default=None) sr = firefoxprofil

我有下面的
命名为tuple
列表

from collections import namedtuple

firefoxprofile = namedtuple("Profile", ["Name", "Path", "isRelative", "Default"])
jb = firefoxprofile(Name='Jason', Path='Profiles/er5rtak4.Jason', isRelative='1', Default=None)
sr = firefoxprofile(Name='Sarah', Path='Profiles/23mvfqcj.Sarah', isRelative='1', Default=None)

files = ["places.sqlite","key4.db", "logins.json"]

firefoxlisttuple = []
firefoxlisttuple.append(jb)
firefoxlisttuple.append(sr)
我正在使用嵌套for循环创建
文件
列表
中每个文件的路径

示例:

for profile in firefoxlisttuple:
    for file in files:
        print("{0}\{1}".format(profile.Path,file))
Profiles/er5rtak4.Jason/places.sqlite
Profiles/er5rtak4.Jason/key4.db
Profiles/er5rtak4.Jason/logins.json
Profiles/23mvfqcj.Sarah/places.sqlite
Profiles/23mvfqcj.Sarah/key4.db
Profiles/23mvfqcj.Sarah/logins.json
输出:

for profile in firefoxlisttuple:
    for file in files:
        print("{0}\{1}".format(profile.Path,file))
Profiles/er5rtak4.Jason/places.sqlite
Profiles/er5rtak4.Jason/key4.db
Profiles/er5rtak4.Jason/logins.json
Profiles/23mvfqcj.Sarah/places.sqlite
Profiles/23mvfqcj.Sarah/key4.db
Profiles/23mvfqcj.Sarah/logins.json
我知道嵌套的
for
循环在preface方面不是一个好主意。我应该做些什么来实现相同的输出

我研究了以下链接:


但我不确定这是否是正确的方法。
permutations
是执行此任务的正确工具吗?

即使没有两个显式for循环,任何解决方案(无论是置换还是其他)都会导致在引擎盖下的两个列表上隐式循环

因为您询问的是代码的性能,所以有两个角度:

  • -这是一个非常大的输入数字的解决方案类别
  • 评测—在这里,库是在python()中度量它的正确方法

您的解决方案是(
n*m
)在两个列表长度(
n
m
)的函数中使用大O表示法。这并不妨碍它在两个列表都很短(在您的示例中,它们都很短)且
n
m
都很小的情况下获得良好的性能。

即使您没有两个显式for循环(无论是置换还是其他解决方案)将导致在引擎盖下的两个列表上隐式循环

因为您询问的是代码的性能,所以有两个角度:

  • -这是一个非常大的输入数字的解决方案类别
  • 评测—在这里,库是在python()中度量它的正确方法

您的解决方案是(
n*m
)在两个列表长度(
n
m
)的函数中使用大O表示法。这并不妨碍它在两个列表都很短(在您的示例中,它们很短)且
n
m
都很小的情况下获得良好的性能。

1。任何方法都将具有两个列表长度乘积的相同渐近运行时。2.找出哪种方法最快的最简单方法是计时:1。任何方法都将具有两个列表长度乘积的相同渐近运行时。2.找出哪种方法最快的最简单方法是计时:对于learninig,假设配置文件列表更大,比如200多个名称,那么应该怎么做?正如您所说,在某个时候,我会在引擎盖下使用两个for循环。@Sveta:您真的确定花时间优化磁盘上的遍历文件是必要的吗?我不认为集中精力在算法层面或者任何层面上对代码进行优化是一个好主意。俗话说:过早优化是万恶之源。我想不出任何解决方案不会像
n*m
那样复杂,我怀疑你提出的问题是否存在解决方案。你试过分析你的脚本吗?试着这样做,并改善热点。只是为了学习,假设配置文件列表更大,比如说200多个名称,那么应该怎么做?正如您所说,在某个时候,我会在引擎盖下使用两个for循环。@Sveta:您真的确定花时间优化磁盘上的遍历文件是必要的吗?我不认为集中精力在算法层面或者任何层面上对代码进行优化是一个好主意。俗话说:过早优化是万恶之源。我想不出任何解决方案不会像
n*m
那样复杂,我怀疑你提出的问题是否存在解决方案。你试过分析你的脚本吗?尝试这样做,改善热点。