python 中的数据结构

news2024/12/26 17:36:48

python 中的数据结构

在这里插入图片描述

1.1 序列

序列时有索引的数组

举例实现:

a=["北京","上海","广州","深圳","重庆","成都"]
print(a[2])
print(a[-1] + " " + a[-2])
print(a[1:3])
# 运行结果
"""
广州
成都 重庆
['上海', '广州']
"""

在序列中可以实现切片功能,切片功能非常重要,后续再Pandas的应用中会重点学习。

b=["北京","上海","广州","深圳","重庆","成都","兰州","乌鲁木齐"]
print(b[0:5:2])
"""
['北京', '广州', '重庆']
"""

上面代码中,0和5分别是序列的启示和终止位置,2时步长,因此出现这种运行结果。

序列也可以相加

image-20240428162313978

序列的 in 应用,用于判断字符串中是否存在序列之中

image-20240428162513646

注:sorted()用于对序列进行排序,list()用于将序列转化为列表,len,min,max,等则分别用于计算序列的长度、最小值、最大值……

1.2 列表

  1. 列表创建

    三种创建的方式,一是手工创建,二是创建空列表之后再添加表元素,三是直接创建一个数据列表。

    a=["北京","上海","广州","深圳","重庆","成都"]
    b=[]
    c=list(range(0,20,2))
    print(a)
    print(b)
    print(c)
    

    image-20240428162913155

  2. 列表元素操作

    列表建立之后,主要就是对列表进行增删改,

    #用append方式添加列表元素
    for i in range(1,10):
        b.append(i)
    print("原来的",b)
    b.insert(2,2.3)
    print("insert方法之后的:",b)
    c=[100,200,300]
    print("extend之后的:")
    b.extend(c)
    print(b)
    b[0]=10000
    print("修改过的:",b)
    del b[-1]
    print("删除过的:")
    b.remove(2.3)
    print(b)
    

    image-20240428163059538

    第一个循环以append方式汪列表b中添加数据,再用insert方式往列表中插入数据,insert方式准确的确定插入位置,extend 方法可以实现两个列表的合并,但是只能简单的合并再一块,对重复的数据不会进行处理。

    a=[1,2,3]
    b=[1,2,4]
    a.extend(b)
    print('看有重复数据的列表的extend结果:',a)
    

    image-20240428163431068

列表元素的命令

  • 删除命令:del(根据列表的索引删除),remove(根据列表的值删除)
  • 统计方法:count,index,sum……
  1. 列表循环语句

    一是 for 循环,二是 enumerate 函数

    print('for循环的输出:')
    for item in a:
        print(item)
    print('for+enumerate循环的输出:')
    for index,item in enumerate(a):
        print(index+1,item)
    
    

    image-20240428163811284

1.3 元组

元组内容不可改变,并且可以将不同类型的数据放入元组中

元组与列表的操作很类是,唯一区别在于元组再代码中是用圆括号括起来的

a=("北京","上海","广州","深圳","重庆","成都")
b=()
c=tuple(range(0,20,2))
print(a)
print(b)
print(c)
a=("哈哈","嘿嘿","呵呵")
print(a)

1.4 字典

  1. 字典的典型作用

    • 一、去重统计
    • 二、提高检索效率
  2. 创建字典

    三种方式创建。

    • 手工直接创建
    • 通过单列表的方法创建
    • 通过两个列表的方式创建
    # 手工创建
    d={'name':'王猪猪','name1':'李大壮'}
    if 'name2' in d:
        print(d['name'])
    else:
        print(d['name1'])
    
    
    # 单列表创建,fromkeys语句
    a=["北京","上海","广州"]
    d1=dict.fromkeys(a)
    print(d1)
    
    # zip语句痛过两个列表创建
    a2=["哈哈","呵呵","嘿嘿"]
    a3=[1,2,3]
    d2=dict(zip(a2,a3))
    print(d2)
    
  3. 字典内容的引用

    两种方式引用

    • 直接引用
    • get方法
    #直接引用方式和get引用方式
    for i in range(len(a2)):
        print(a2[i]+"  "+str(d2[a2[i]]))
        print(a2[i] + "  " + str(d2.get(a2[i])))
    
  4. 字典的增删改查

    d2["嘟嘟"]=4
    print(d2)
    d2["哈哈"]=10000
    print(d2)
    del d2["哈哈"]
    print(d2)
    print(d2.keys())
    print(d2.items())
    for x in d2.keys():
        print(x)
    for y in d2.items():
        print(y)
    
  5. 字典在多分支判断中的应用

    from distutils import log
    def stateA():
       print('stateA called')
    def stateB():
       print('stateB called')
    def stateC():
        print('stateC called')
    def stateDefault():
        print('stateDefault called')
    cases = {'a':stateA, 'b':stateB, 'c':stateC}#定义一个字典
    def switch(case):
      if case in cases:
        cases[case]()
      else:
        stateDefault()
    
    def test():
      switch('b')
      switch('c')
      switch('a')
      switch('x')
    test()
    
    

    先定义四个函数,随后定义一个字典 cases,在随后定义switch 的过程中,可以利用字典的 in 语句获取相应的数据。

1.5 集合

集合是一组元素的组合,其嘴重要的特征是保存不重复元素

  1. 两种创建方式
  • 直接创建
  • 用 set() 函数创建
set1={"北京","上海","广州","深圳"}
set2={"北京","重庆","成都","西安"}
a=["北京","三亚","海口","南宁"]
set3=set(a)
print(set1)
print(set2)
print(set3)
  1. 增删改功能

    • 添加:add
    • 定点删除:remove
    • 弹出方式:pop
    set1.add("乌鲁木齐")
    print(set1)
    set1.remove("乌鲁木齐")
    print(set1)
    print("现在开始进pop了:")
    print(len(set1))
    for i in range(1,len(set1)+1):
        set1.pop()
        print(set1)
    
  2. 集合运算

    交集&,并集|,差集-

    set1={"北京","上海","广州","深圳"}
    set2={"北京","重庆","成都","西安"}
    print(set1 & set2)
    print(set1 | set2)
    print(set1-set2)
    
  3. 集合综合案例

    import openpyxl
    from  openpyxl.reader.excel  import  load_workbook
    import sys
    import os
    wk=load_workbook(filename="基金数据.xlsx")
    sht1=wk["基金1"]
    sht2=wk["基金2"]
    a=set()
    b=set()
    for i in range(1,sht1.max_row+1):
        a.add(sht1.cell(i,1).value)
    for i in range(1,sht2.max_row+1):
        b.add(sht2.cell(i,1).value)
    print(a-b)
    print(b-a)
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1647351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java设计模式 _结构型模式_外观模式

一、外观模式 1、外观模式 外观模式(Facade Pattern)是一种结构型模式。主要特点为隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这有助于降低系统的复杂性,提高可维护性。当客户端与多个子系统之间存在大量…

使用Zotero自定义参考文献格式的教程

Zotero Zotero是一个开源的参考文献管理软件,它能够帮助研究人员和学生收集、管理和引用各种来源的文献,包括书籍、期刊文章、网页、图片等。用户可以使用Zotero将文献信息直接保存到自己的库中,并且可以根据需要创建标签、注释和文件夹来组…

Go实现树莓派控制舵机

公式说明 毫秒(ms)是时间的单位,赫兹(Hz)是频率的单位,而DutyMax通常是一个PWM(脉冲宽度调制)信号中表示最大占空比的值。以下是它们之间的关系和一些相关公式: 频率&…

软件测试与管理:黑盒测试-因果图法和场景法

知识思维导图: ​​​​​​​ 例题1:运用因果图法设计测试用例 有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下: 若投入5角钱或1元钱的硬币,按下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料…

XSS-Labs 靶场通过解析(上)

前言 XSS-Labs靶场是一个专门用于学习和练习跨站脚本攻击(XSS)技术的在线平台。它提供了一系列的实验场景和演示,帮助安全研究人员、开发人员和安全爱好者深入了解XSS攻击的原理和防御方法。 XSS-Labs靶场的主要特点和功能包括:…

C++字模软件发送 单片机接收显示

/****先定义数组类型再赋值**L310*********/ /*2014 8 21 10:01**PAST*CODE1000**TEST**/ #include<reg51.h> #define uint unsigned int #define uchar unsigned char sfr AUXR0x8e; //辅助寄存器 sfr SADDR0xA9; …

后台启动HIVE的JDBC连接

后台启动HIVE的JDBC连接 生活就像一杯咖啡&#xff0c;有时苦涩&#xff0c;有时香甜&#xff0c;但都是值得品味的经历。无论遇到什么挑战&#xff0c;记住在每一天的开始&#xff0c;你都有机会给自己倒上一杯清新的力量&#xff0c;为心灵添一抹温暖。勇敢地面对生活的苦与甜…

aardio爬虫) 实战篇:逆向有道翻译web接口

前言 之前的文章把js引擎(aardio封装库) 微软开源的js引擎(ChakraCore))写好了&#xff0c;这篇文章整点js代码来测一下bug。测试网站&#xff1a;https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻译js逆向&#xff08;MD5加密&#xff0c;AES加密&…

Ubuntu上使用audit2allow解决Android Selinux问题

1.安装工具 sudo apt install policycoreutils 2.运行命令 提前用dmesg或者串口抓取kernel log 遇到错误&#xff0c;提示需要用-p指定policy file&#xff0c;然偶尝试创建一个policy空文件&#xff0c;用-p选项&#xff0c;遇到如下错误 3.规避问题 首先跟进错误log的堆栈…

【copilot 使用指南 - @workspace】

为什么需要workspace 默认情况下&#xff0c;copilot只能分析当前文件中的代码内容&#xff0c; 那么如何让copliot 跨文件分析&#xff0c;分析整个项目&#xff0c;分析整个代码目录下的代码&#xff0c;就要用到workspace&#xff0c;举例 &#xff1a;假设如下代码 index…

【图书推荐】《图神经网络基础、模型与应用实战》

本书目的 详解PyTorch 图神经网络基础理论、模型与十多个应用案例&#xff0c;带领读者掌握图神经网络在自然语言处理、计算机视觉、推荐系统、社交网络4个领域的应用开发方法&#xff0c;丰富读者利用深度学习算法解决实际问题的能力。 本书案例 图卷积网络实现图注意力网络…

【状态压缩 动态规划 数论】1799. N 次操作后的最大分数和

本文涉及知识点 状态压缩 动态规划 数论 动态规划汇总 LeetCode1799. N 次操作后的最大分数和 给你 nums &#xff0c;它是一个大小为 2 * n 的正整数数组。你必须对这个数组执行 n 次操作。 在第 i 次操作时&#xff08;操作编号从 1 开始&#xff09;&#xff0c;你需要&a…

UE5 UMG

锚点 参考链接&#xff1a;虚幻5UI系统&#xff08;UMG&#xff09;基础&#xff08;已完结&#xff09;_哔哩哔哩_bilibili

专注 APT 攻击与防御—基于UDP发现内网存活主机

UDP简介&#xff1a; UDP&#xff08;User Datagram Protocol&#xff09;是一种无连接的协议&#xff0c;在第四层-传输层&#xff0c;处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点&#xff0c;也就是说&#xff0c;当报文发送之后&#xf…

【Linux】冯·诺依曼体系结构

要想谈进程&#xff0c;我们就不能只谈进程&#xff0c;我们如果想搞清楚什么是进程&#xff0c;就要从操作系统讲起。我们现在的不管是Linux或是Windows或是安卓等操作系统&#xff0c;它们都有一个相同点&#xff0c;那就是遵循冯诺依曼体系结构&#xff0c;我们看一下冯诺依…

Docker-harbor

一、搭建本地私有仓库 1.1 下载Registry镜像 1.2 添加本地私有仓库配置 1.3 重启服务并运行Registry容器 1.4.容器的操作 1.4.1 拉取Nginx镜像并为镜像打标签 1.4.2 上传到私有仓库 1.4.3 列出私有仓库所有镜像 1.4.4 列出私有仓库的镜像的所有标签 1.4.5 先删除原有…

leetcode-没有重复项的全排列-97

题目要求 思路 1.递归&#xff0c;如果num和n的元素个数一样就可以插入res中了&#xff0c;这个作为递归的结束条件 2.因为这个题是属于排列&#xff0c;并非组合&#xff0c;两者的区别是排列需要把之前插入的元素在回退会去&#xff0c;而组合不需要&#xff0c;因此会存在一…

5.Git

Git是一个分布式版本控制工具&#xff0c;主要用于管理开发过程中的源代码文件&#xff08;Java类、xml文件、html文件等&#xff09;。通过Git仓库来存储和管理这些文件&#xff0c;Git仓库分为两种 本地仓库&#xff1a;开发人员自己电脑上的Git仓库远程仓库&#xff1a;远程…

leetcode-有重复数字的全排列-98

题目要求 思路 1.同【没有重复项的全排列-97】这个题一样&#xff0c;都是递归的题&#xff0c;区别在于这个可能会包含重复的数字&#xff0c;因此&#xff0c;不能只是简单的通过两个值是否相等然后用标志位标记&#xff0c;而是新增了一个数组&#xff0c;这个数组专门用于…

Springboot工程创建

目录 一、步骤 二、遇到的问题及解决方案 一、步骤 打开idea,点击文件 ->新建 ->新模块 选择Spring Initializr&#xff0c;并设置相关信息。其中组为域名&#xff0c;如果没有公司&#xff0c;可以默认com.example。点击下一步 蓝色方框部分需要去掉&#xff0c;软件包…