簡體   English   中英

“如何不均勻地遍歷兩個列表”

[英]“How to unevenly iterate over two lists”

對於這個非常具體的問題,我找不到解決方案。 本質上,我有兩個包含兩個元素的列表:[A,B]和[1,2]。 我想創建一個嵌套循環,該循環在第二個列表上進行迭代和擴展,並在每次迭代后添加第一個列表的每個元素。

我最后想看到的是:

A B 
1 A
1 B
2 A
2 B
1 1 A
1 2 A
2 1 A
2 2 A
1 1 B
1 2 B
2 1 B
2 2 B
1 1 1 A
1 1 2 A
...

我的問題是,我這樣做的嘗試是將A和B遞歸地分開,以便出現這種模式(也請注意不同的第一行):

A
1 A
2 A
1 1 A
1 2 A
2 1 A
2 2 A
1 1 1 A
1 1 2 A
...
B
1 B
2 B
1 1 B
1 2 B
2 1 B
2 2 B
1 1 1 B
1 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_elements


for 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

我會嘗試以下風格的東西:

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:不構建新生成的元素的列表會更優雅,但隨后您必須對其進行兩次計算。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM