Python学习笔记_二维数组的查找判断

在进行数据处理的工作中,有时只是通过一维的list和有一个Key,一个value组成的字典,仍无法满足使用,比如,有三列、或四列,个数由不太多。

举一个现实应用场景:学号、姓名、手机号,可以再加元素

这里我想到的一个办法是采用二维数组来处理。

软件环境:

1.OS:Win10 64位

2.Python 3.7

参考代码,不多解释,下面代码可执行。

#! -*- coding utf-8 -*-
#! @Time  :2019/3/10 
#! Author :Frank Zhang
#! @File  :Test.py
#! Python Version 3.7

#判断某个元素是否在二位数组中存在,存在则返回True,不存在,则返回False
list=[]
def main():
    list_a=['a1','a2','a3']
    if list_a not in list:
        list.append(list_a)

    list_b=['b1','b2','b3']
    if list_b not in list:
        list.append(list_b)

    list_c=['c1','c2','c3']
    if list_c not in list:
        list.append(list_c)

    list_d=['d1','d2','d3']
    if list_d not in list:
        list.append(list_d)


    list_e=['e1','e2','e3']
    if list_e not in list:
        list.append(list_e)

    list_f=['c1','c2','c3']
    if list_f not in list:
        list.append(list_f)
    
    
    print(list)
    
    strTmp="b1"
    print("The search str is :" + strTmp)

    print("====================example 1=======================")
    if Find1(strTmp,list)==True:
        print("It's found")
    else:
        print("It's not found")

    print("====================example 2=======================")
    list_r=Find2(strTmp,list)

    if not list_r:
        print("The target list is not found.")
    else:
        print(list_r)

    print("====================example 3=======================")
    list_r=Find3(strTmp,list,1)

    if not list_r:
        print("The target list is not found.")
    else:
        print(list_r)
 

#判断是否存在某个元素,如果存在,则返回True,不存在,则返回False
def Find1(target,array):
    # 不存在数组则直接返回
    if not array:
        return False
    # 二维数组的行
    row = len(array)
    # 二维数组的列
    col = len(array[0])
    # 二层循环遍历二维数组
    for i in range(row):
        for j in range(col):
            # 如果目标值等于数组中的值,则找到
            if target == array[i][j]:
                return True
    # 数组遍历结束后仍未找到
    return False

#判断某个元素是否存在,存在则返回该元素存在的一维数组
def Find2(target,array):
    if not array:
        return False

    # 二维数组的行
    row = len(array)

    # 二维数组的列
    col = len(array[0])

    # 二层循环遍历二维数组
    for i in range(row):
        for j in range(col):
            # 如果目标值等于数组中的值,则找到
            if target == array[i][j]:
                return array[i]
     # 数组遍历结束后仍未找到
    return False

def Find3(target,array,searchCol):
    if not array:
        return False

    # 二维数组的行
    row = len(array)

    # 二维数组的列
    col = len(array[0])

    # 二层循环遍历二维数组
    for i in range(row):
        # 如果目标值等于数组中的值,则找到
        if target == array[i][searchCol]:
            return array[i]
     # 数组遍历结束后仍未找到
    return False
 
if __name__=="__main__":
    main()

其中分三种情况:

1.判断某个元素是否在二位数组中。在则返回True,不在则返回False

2.判断某个元素是否在二维数组中,在则返回该元素所在的行,作为一维数组,可相应获取其它该一维数组里其它的元素。

3.判断某个元素是否在二维数组指定列中,在则返回该元素所在的行。

posted on 2019-03-10 15:40  天道酬勤2016  阅读(6876)  评论(0编辑  收藏  举报