簡體   English   中英

Python 如何獲取二維列表的所有矩形子集

[英]Python How to Get All Rectangular Subsets of a 2D list

假設給了我一個 2D 列表

001
111
111

我想獲取二維列表的所有可能子集,它們是矩形並包含左上角元素/ grid[0][0]處的元素(我不知道如何描述它)

它應該是 output:

0

00

001

0
1

00
11

001
111

0
1
1

00
11
11

001
111
111

您將如何獲得所有可能的子集? 我對如何實現它沒有最模糊的想法。

根據您的解釋,我想出了以下解決方案:

import numpy as np

list1=[[0,0,1],[1,1,1],[1,1,1]]

df=pd.DataFrame(list1, columns=['a','b','c'])

list2=[]



for i in range(1,4):
    for j in range(1,4):
        list2.append(df.iloc[:i,:j].to_numpy('int').tolist())

Output:

[[[0]], 
 [[0, 0]],
 [[0, 0, 1]],
 [[0], [1]],
 [[0, 0], [1, 1]],
 [[0, 0, 1], [1, 1, 1]],
 [[0], [1], [1]],
 [[0, 0], [1, 1], [1, 1]],
 [[0, 0, 1], [1, 1, 1], [1, 1, 1]]]

如果您希望擁有更高階的矩陣,那么您只需將 4 更改為您希望for i/j in range(2,4)的數字。

一個簡單的方法是:

for i in range(n):
    for j in range(n):
        x = grid[0:i+1]
        for k in x:
            print(k[0:j+1])
        print()
ints = [
    [0, 0, 1],
    [1, 1, 1],
    [1, 1, 1]
]

def get_slice(ints, x, y):
    rows = ints[0:y+1]
    return list(map(lambda row: row[0:x+1], rows))

for row in get_slice(ints, 2, 1):
    print(*row)

Output:

0 0 1
1 1 1

get_slice首先根據參數yints進行切片,這只會產生我們感興趣的“行”。然后我們根據參數x對每一行進行切片。

暫無
暫無

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

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