试图将 3 个列表中的元素组合(连接)为一个新列表 [重复]
Posted
技术标签:
【中文标题】试图将 3 个列表中的元素组合(连接)为一个新列表 [重复]【英文标题】:Trying to combine (concatenate) elements from 3 lists into one, new list [duplicate] 【发布时间】:2013-10-03 23:47:21 【问题描述】:我有 3 个列表,其中包含 Town、Range 和 Section(这些也是列表的名称)信息。例如,List Town 有 'N14'...'N20',List Range 有 'E4'...'E7' 并且 List Section 有 '01'...'36'。我希望能够将三个列表中的所有可能组合放入一个名为 AOI 的新列表中,例如“N14E401”....“N20E732”(727 种可能的组合)。这适用于已经编写且正在运行的 arcpy 脚本,该脚本将使用 raw_input 提示(上述组合),然后将其用作 AOI 进行一些地理处理(不重要,因为脚本的那部分工作正常)。我只是想让 AOI 选择更容易,因为我现在设置它的方式是,用户必须在三个单独的步骤中将 Town、Range 和 Section 信息作为单独的 raw_inputs 输入。
提前致谢。我会把它放在 arcpy 特定区域,但它似乎更像是一个 python 问题而不是一个 arcpy 问题。 我是一个完整的 python 菜鸟,并且一直在自学脚本,所以……要温柔、善良的读者。
【问题讨论】:
【参考方案1】:您想要实现的是 3 个列表中的 Cartesian product。这可以通过使用itertools.product 轻松实现
偏离路线你不会得到你所描述的 O/P,而是你会得到一个元组列表,但是再次加入元组列表将是微不足道的。对于您需要调用的每个元组str.join
您可能想要遍历元组,在incrementally appending 时加入列表,或者更好地使用List comprehension
【讨论】:
正是这个。这是SO answer providing example code。 那么我原来的三个列表应该是元组吗?...它们包含静态信息,所以最初我想将它们创建为元组。 @JasparKatt:不,只是项目列表(我相信它们只是字符串)就足够了。阅读链接中提供的文档。【参考方案2】:为什么不直接使用一些简单的for
循环?
AOI = []
for t in Town:
for r in Range:
for s in Section:
AOI.append(t + r + s)
【讨论】:
...宾果游戏!。有几次我都非常接近这个。当您知道答案应该非常简单时非常令人沮丧,但我有时没有使用 python 的背景/经验来完成最后一步。谢谢大家。以上是关于试图将 3 个列表中的元素组合(连接)为一个新列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章