为了账号安全,请及时绑定邮箱和手机立即绑定

“如何不均匀地迭代两个列表”

“如何不均匀地迭代两个列表”

动漫人物 2021-09-28 13:29:35
我无法为我遇到的这个非常具体的问题找到解决方案。本质上,我有两个列表,每个列表有两个元素:[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:不构建新生成元素的列表会更优雅,但是你必须计算它们两次。


查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信