算法,业务场景一:矩阵处理

本文介绍了一种用于判断列数据是否完全包含在行数据中的算法,通过构建数据结构和逐项对比,实现对大规模数据集的有效处理,适用于数据验证和信息筛选场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、有四行数据分别是:

1、4、5
2、3、4
3、5
1、5

2、有12列数据分别是:

1
2
3
4
5
1、4
1、5
2、3
2、4
3、4
3、5
4、5

 

3、待实现逻辑:

判断每列的数据,是不是都在每一行的数据里,如果是 结果为1 else 0
结果返回一个4行12列的数组
​
eg:
列数1:1 被包含在 行数1里   结果为 1
列数7:1 、4 不被包含在 行数1里   结果为 0
​

4、代码逻辑

4.1
将每一行数据的每个数值放到一个列表里,整体再追加到一个大列表里
rows = [[1, 4, 5], [2, 3, 4], [3, 5], [1, 5]]
​
每列数据同上处理
cols = [[1], [2], [3], [4], [5], [1, 4], [1, 5], [2, 3], [2, 4], [3, 4], [3, 5], [4, 5]]
​
4.2
判断是否包含,如果是向一维数组追加1,else 追加 0
​
4.3
按照列数,切分一维数组,组合成4行12列的二维矩阵

 

5、代码实现


cols = [[1], [2], [3], [4], [5], [1, 4], [1, 5], [2, 3], [2, 4], [3, 4], [3, 5], [4, 5]]

rows = [[1, 4, 5], [2, 3, 4], [3, 5], [1, 5]]

#将包含结果,存放一维矩阵
row1 = []

for row in rows:
    for col in cols:
        res = [False for c in col if c not in row]
        if res:
            row1.append(0)
        else:
            row1.append(1)

#将一维矩阵,切分呈现结果的二维矩阵
row2 = []

#获取一维矩阵的长度
c = len(row1)

#标示位
s = 0

#获取列数
j = c // len(rows)

#切片累加定值
j1 = c // len(rows)

while j <= c:
    row2.append(row1[s:j])
    s += j1
    j += j1
print(row2)





 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值