我无法为我遇到的这个非常具体的问题找到解决方案。本质上,我有两个列表,每个列表有两个元素:[A, B] 和 [1,2]。我想创建一个嵌套循环,在第二个列表上迭代和扩展,并在每次迭代后添加第一个列表的每个元素。最后我想看到的是:A B 1 A1 B2 A2 B1 1 A1 2 A2 1 A2 2 A1 1 B1 2 B2 1 B2 2 B1 1 1 A1 1 2 A...我的问题是,我尝试这样做递归地将 A 和 B 分开,以便出现这种模式(也请注意不同的第一行):A1 A2 A1 1 A1 2 A2 1 A2 2 A1 1 1 A1 1 2 A...B1 B2 B1 1 B1 2 B2 1 B2 2 B1 1 1 B1 1 2 B...我如何将 A 和 B 放在一起?这是代码:def second_list(depth): if depth < 1: yield '' else: for elements in [' 1 ', ' 2 ']: for other_elements in list (second_list(depth-1)): yield elements + other_elementsfor first_list in [' A ', ' B ']: for i in range(0,4): temp=second_list(i) for temp_list in list(temp): print temp_list + first_list
1 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
我会尝试以下风格的东西:
l1 = ['A', 'B']
l2 = ['1', '2']
def expand(l1, l2):
nl1 = []
for e in l1:
for f in l2:
nl1.append(f+e)
yield nl1[-1]
yield from expand(nl1,l2)
for x in expand(l1, l2):
print (x)
if len(x) > 5:
break
注意:输出的第一行似乎不是同一规则的产物,所以这里没有生成,如果需要,可以手动添加。
注意2:不构建新生成元素的列表会更优雅,但是你必须计算它们两次。
添加回答
举报
0/150
提交
取消