在进行数据处理的工作中,有时只是通过一维的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.判断某个元素是否在二维数组指定列中,在则返回该元素所在的行。

Python学习笔记_二维数组的查找判断的更多相关文章

  1. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析

    前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...} / ...

  2. C语言学习笔记 (006) - 二维数组传参的三种表现形式

    # include <stdio.h> # include <stdlib.h> # define M # define N int getdate(int (*sp)[M]) ...

  3. C语言笔记(二维数组与数值指针)

    一.关于二维数组和二维数组区别 (1)一维数组在内存中是连续分布存储的,同样,二维数组也是在内存连续存储的.所以从内存的角度来分析,一维数组和二维数组其实没有本质区别. (2) 二维数组可以使用一维数 ...

  4. 【Python学习笔记之二】浅谈Python的yield用法

    在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...

  5. Python学习笔记(二):条件控制语句与循环语句及常用函数的用法

    总结的内容: 1.条件控制语句 2.while循环语句 3.for循环语句 4.函数的用法 一.条件控制语句 1.介绍 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决 ...

  6. PHP开发笔记:二维数组根据某一项来进行排序

    比如说我们现在有一个二维数组: $arr = array( ‘d' => array(‘id' => 5, ‘name' => 1, ‘age' => 7), ‘b' => ...

  7. 问题 A: 【动态规划】采药_二维数组_一维数组

    问题 A: [动态规划]采药 时间限制: 1 Sec  内存限制: 64 MB提交: 35  解决: 15[提交][状态][讨论版] 题目描述 山洞里有一些不同的草药,采每一株都需要一些时间,每一株也 ...

  8. 【C语言学习】-05 二维数组、字符串数组、多维数组

    ⼆二维数组.字符串数组.多维数组

  9. java 数组基础学习(一维二维数组)

    1.一维数组 1>静态初始化:数据类型[ ] 变量名 = {元素} 例:int[ ] arr = {1,2} 动态初始化:数据类型[ ] 变量名 = new数据类型[数据长度] 例:int[ ] ...

随机推荐

  1. 【代码笔记】iOS-带输入框的UIAlertView

    一,效果图. 二,代码. //点击任何处,弹出输入框 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UIAlertV ...

  2. MySQL遇到check the manual that corresponds to your MySQL server version for the right syntax错误

    用MySQL新建了一个Order表,插入了一条数据.总是显示 You have an error in your SQL syntax; check the manual thatcorrespond ...

  3. .net+easyui系列--按钮

    easyui提供了各种按钮样式,包括搜索.新增.保存.删除等 <a id="btn" href="#" class="easyui-linkbu ...

  4. 将apk文件添加到Android模拟器(AVD)中运行

    apk不同exe和jar文件,apk需要在安卓系统中运行,单有一个apk文件还是没用,不能直接拖进AVD中(当然可以直接放到安卓系统的手机中) 由于我们的eclipse大都是已经安装好,解压直接使用的 ...

  5. hibernate 一对多,多对一,多对多实体映射完美解决方案(再也不会糊涂了,哈哈)

  6. cobbler自动化安装系统

    笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 在很久很久以前,使用kickstart实现自动化安装的时候,我一直认为装系统是多么高大上的活,直到cobbler的 ...

  7. smack4中文文档

    smack4中文文档 基于samck官方最新文档翻译而成,适用于最新的Smack4.x 简介 6月毕业后来到帝都上班,找了一份Android开发的工作,公司开发的APP需要使用XMPP和Smack进行 ...

  8. Linux Collection:用户管理

    adduser 添加(新建)用户账户 $ sudo adduser username groups 添加组 $ groups username # 查看用户已有的组 $ groups username ...

  9. oracle单行函数 之 数字函数

    Round(数字 \ 列 [,保留小数的位数]):四舍五入   select Round(1234.45,1) from dual  =  1234.5 Trunc(数字 \ 列 [,保留小数的位数] ...

  10. Python高级特性:迭代器和生成器 -转

    在Python中,很多对象都是可以通过for语句来直接遍历的,例如list.string.dict等等,这些对象都可以被称为可迭代对象.至于说哪些对象是可以被迭代访问的,就要了解一下迭代器相关的知识了 ...