簡體   English   中英

從python中的列表列表中提取列表模式

[英]extract list pattern from list of list in python

我有一個表格清單-

a_list = [[1, [2, 3, 4]], [2, [3, 4]], [3, [4]]]

我想將其轉換為表格-

b_list = [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]

使用列表理解,我嘗試了以下代碼

for lst in tup:
    for lst1 in tup[1]:
        tup2 = [lst[0],lst1]

並得到(這是錯誤的)-

tup2 = [3, [3, 4]]

請幫助,在此先謝謝

列表理解很簡單:

a_list = [[1, [2, 3, 4]], [2, [3, 4]], [3, [4]]]

b_list = [[x,y] for [x,b] in a_list for y in b]

print(b_list)

結果:

[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]

使用[x,b]將項目解壓縮為x作為數字, b作為列表。 循環遍歷b元素並建立扁平樣式的對。

無論那里有多少個int,您都可以嘗試這樣的事情:

for sub_list in b:
    for items in sub_list:
        if isinstance(items, list):
            track = sub_list.index(items)
            first = sub_list[:track]
            second = sub_list[track:][0]
            import itertools

            print([list(k) for k in itertools.product(first, second)])

測試用例:

b = [[1, [2, 3, 4]], [2, [3, 4]], [3, [4]]]

輸出:

[[1, 2], [1, 3], [1, 4]]
[[2, 3], [2, 4]]
[[3, 4]]

測試案例2:

b=[[1,2,[2, 3, 4]], [2,3,5,6 ,[3, 4]], [3, [4]]]

輸出:

[[1, 2], [1, 3], [1, 4], [2, 2], [2, 3], [2, 4]]
[[2, 3], [2, 4], [3, 3], [3, 4], [5, 3], [5, 4], [6, 3], [6, 4]]
[[3, 4]]

暫無
暫無

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

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