python中数据结构之列表,元组,字典,集合

2023-11-16

一 列表

    列表
    引入一个新的概念:数据结构
    数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字或字符,甚至可以是其他数据结构,在 python 中,最基本的数据结构是序列,序列中的每个元素匾被分配一个序号–即元素的位置,也称为索引,第一个索引是0,第二个则是1,以此类推
    列表是什么
    列表由一系列特定顺序排列的元素组成,你可以创建包含字母表中所有字母,数字或所有家庭成员姓名的列表;也可>以将任何东西加入列表中,其中的元素之间可以没有任何关系
    列表类似于C语言中的数组

1)索引

service = ['http', 'ssh', 'ftp']
print service[0]
print service[-1]

这里写图片描述
2)切片

service = ['http', 'ssh', 'ftp']
print service[::-1] # 列表的翻转
print service[1:] # 除了第一个元素之外的其他元素
print service[:-1] # 除了最后一个元素之外的其他元素

这里写图片描述
3)重复

service = ['http', 'ssh', 'ftp']
print service * 3

这里写图片描述
4)连接

service = ['http', 'ssh', 'ftp']
service1 = ['mysql','firewalld']
print service + service1

这里写图片描述
5)成员操作符

service = ['http', 'ssh', 'ftp']
service1 = ['mysql','firewalld']
print 'firewalld' in service  #返回值为False
print 'firewalld' in service1  #返回值为True
print 'firewalld' not in service  #返回值为True

6)for循环遍历

service = ['http', 'ssh', 'ftp']
for i in service:
    print i

这里写图片描述
7)显示服务(也可以认为是美观的帽子)

print '显示服务'.center(50,'*')

这里写图片描述
8)列表的嵌套

service2 = [['http',80],['ssh',22],['ftp',21]]
# 索引
print service2[0][1]      
print service2[-1][1]
# 切片
print service2[:][1]
print service2[:-1][0]
print service2[0][:-1]

这里写图片描述
9)列表的增加

service = ['http', 'ssh', 'ftp']
# 1.
print service + ['firewalld']

# 2.append:追加 追加一个元素到列表中
service.append('firewalld')
print service

# 3.extend:拉伸 追加多个元素到列表中
service.extend(['mysql', 'firewalld'])
print service

# 4. insert:在指定索引位置插入元素
service.insert(1,'samab')
print service

这里写图片描述
10)列表的删除

service = ['http', 'ssh', 'ftp']

1.如果pop()不传递值的时候,默认弹出最后一个元素
print service.pop()
pop()也可以传递索引值
print service.pop(0)

2.remove:删除指定的元素
service.remove('ssh')
print service

3.del 关键字 从内存中删除列表
print service
del service 
print service

11)列表的修改

service = ['http', 'ssh', 'ftp']
# 通过索引,重新赋值
service[0] = 'mysql'
print service
# 通过切片
print service[:2]
service[:2] = ['samba','ladp']
print service

这里写图片描述
12)列表的查看

service = ['http', 'ssh', 'ftp','ftp']

# 查看列表中元素出现的次数
print service.count('ssh')

# 查看指定元素的索引值
print service.index('ssh')

这里写图片描述
13)列表的特性

# 列表里:可以存储不同的数据类型
li = [1,1.2,True,'hello']
print li
print type(li)

# 列表里面也可以嵌套列表(列表:也是一种数据类型)
li = [1,1.2,True,'hello',[1,2,3,4,5]]
print li
print type(li)

这里写图片描述
14)列表的排序

service = ['http', 'ssh', 'ftp','ftp']
#按照Ascii码进行排序的
service.sort()
print service
#进行倒序排序
#service.sort(reverse=True)
#print service

phones = ['bob', 'harry', 'Lily', 'Alice']
phones.sort()          
#对字符串排序不区分大小写
#phones.sort(key=str.lower)
#phones.sort(key=str.upper)
print phones

command = ['print','ls','ssh','cd','at','james']
print command
#临行排序
print sorted(command)
print command


command1=['hello','world','hello','python','so','skr']
print command1
#逆序
command1.reverse()
print command1

import random
li = list(range(10))
print li
#将原有的列表顺序打乱
random.shuffle(li)
print li

这里写图片描述
二 元组

Tuple(元组)与列表相似,不同之处在于元组的元素不能修改
元组表示多个元素组成的序列
元组在python开发中,有特定的应用场景用于存储一串信息,数据之间使用 , 分隔
元组用 () 定义
列表中通常保存相同类型的数据,而元组中通常保存不同类型的数据
不可对元组内容进行增添删除

1)定义一个元组

t = (1,2,3,4.0,'star')
print t,type(t)

这里写图片描述
2)元组的数据特性

# 元组本身不能增删改查,但是如果元组里面包含可变数据类型,可以间接修改元组的内容
t1 = ([1,2,3],4)
t1[0].append(4)
print t1

这里写图片描述
元组如果只有一个元素的时候,后面一定要加逗号,负责数据类型不确定

t2 = ('hello',)
t3 = (1,)
print type(t2),type(t3)

这里写图片描述
3)元组的特性
类似列表可参考

allowUsers = ('root','student','tom')
allowPasswd = ('123','456','789')

# 索引 # 切片
print allowUsers[0]
print allowUsers[-1]
print allowUsers[1:]
print allowUsers[2:]
print allowUsers[:-1]
print allowUsers[::-1]

# 重复
print allowUsers * 3
# 连接
print allowUsers + ('lili','kaka')
# 成员操作符
print 'student' in allowUsers
print 'tom' not in allowUsers

4)元组的应用的场景

1.变量交换数值
a = 1
b = 2
b,a = a,b
# 先把(a,b)封装成了一个元组(1,2)
#b,a = a,b            
#b =(1,2)[0] a=(1,2)[1]   #转化的原理
print a,b

2.打印变量值
name = 'tom'
age = 10
t = (name,age)
print 'name: %s,age: %d' %(name,age)
print 'name: %s,age: %d' %t     #简化代码

3.元组的赋值:有多少个元素,就用多少个变量接收
t1 = ('tom',10,100)
name,age,score = t1
print name,age,score

scores = (100,89,45,78,65)
scoresLi = list(scores)   # 把元组数据类型返回值类型改成列表
print type(scoresLi)   #查看数据类型
print scoresLi
#scores = sorted(scores)  排序
print scores

这里写图片描述
5)python中常用的内置方法

枚举:返回索引值和对应的value值
s = 'hello'
#遍历
for i in s:
    print i
#枚举
for i,v in enumerate('tom'):
    print i
    print type(i)
    print v
    print type(v)
    print str(i) + '---->' + v

s1 = 'abc'
s2 = '123'
#zip()的使用
for i in zip(s1,s2):
    print i
    #print '-'.join(i)

这里写图片描述
三 字典

    1 字典的定义
    dictionary(字典)是除列表以外 python 中最灵活的数据类型
    字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息
    2 字典和列表的区别
    列表是有序的对象集和
    字典是无序的对象集和
    3 字典用 {} 定义
    字典使用键值对存储数据,键值对之间使用 : 分隔
    键key是索引
    值value是数据
    键和值之间使用;分隔
    键必须是唯一的(因为我们必须通过键来找到数据)
    值可以取任何数据类型,但键只能使用字符串,数字或元组
    4 字典是一个无序的数据集和,使用print函数输出字典时,通常输出的顺序和定义的顺序是不一致的

1)定义字典

message = {
    'name':'tom',
    'age':18,
    'height':1.80,
    'weight':75.5
}
print message
print type(message)

d = dict(a=1,b=2)
print d,type(d)

这里写图片描述
2)字典的特性

d = dict(a=1,b=2)
print d
# 成员操作符(默认判断key值是否存在)
print 'a' in d
print 1 in d
# for循环(默认循环遍历字典的key值)
for i in d:
    print i

这里写图片描述
3)字典的增加

d = dict(a=1, b=2)
print d
# 添加或者更改key-value对
d['g'] = 10
print d   #把'g':10加入到d中去
d['a'] = 10
print d   #把'a':10加入到d中去
"""
update:
    如果key值存在,更新value值
    如果key值不存在,添加key-value值
"""
d.update({'a':4,'f':1})
print d
#####
{'a': 1, 'b': 2}
{'a': 4, 'b': 2, 'f': 1}
#####
"""
setdefault
    如果key值已经存在,不做修改
    如果key值不存在,添加key-value值
"""
d.setdefault('a',10)
print d
#####
{'a': 1, 'b': 2}
{'a': 1, 'b': 2}
#####

四 集合
1 ) 集合的定义
集合是不重复的数据结构

s = {1,2,3,1,2,3,4,5}
print s,type(s)
s1 = {1}
print s1,type(s1)

这里写图片描述
2 )集合的特性
集合只支持 成员操作符 for循环

s = {1,2,3}
print s[0]
#重复
print s * 3
#连接
print s + {5,4,6}
#成员操作符
print 1 in s
#遍历
for i in s:
    print i,
#枚举
for i,v in enumerate(s):
    print 'index: %s,value:%s' %(i,v)

3 )集合的常用方法
1 集合的增加

s = {6, 7, 8, 1, 2, 3}
s.add(10)   #默认已经排序
s.add(8)
print s
# 增加多个元素
s.update({4,5})
print s

这里写图片描述
2 集合的删除

s = {6, 7, 8, 1, 2, 3}
print s
s.pop()
print s
# 删除指定的元素
s.remove(2)
print s

这里写图片描述
3 )交集 并集 差集

s1 = {1, 2, 3}
s2 = {2, 3, 4}

# 并集
print '并集:', s1.union(s2)
print '并集:', s1 | s2

# 交集
print '交集:', s1.intersection(s2)
print '交集:', s1 & s2

# 差集
# 可以理解为s1中有哪些s2中没有的元素
print '差集:', s1.difference(s2)  # s1-(s1&s2)
print '差集:', s1 - s2
# 可以理解为s2中有哪些s1中没有的元素
print '差集:', s2.difference(s1)  # s2-(s1&s2)
print '差集:', s2 - s1

这里写图片描述

对等差分:并集-交集
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print '对等差分:', s1.symmetric_difference((s2))
print '对等差分:', s1 ^ s2

这里写图片描述

s3 = {1, 2}
s4 = {1, 2, 3}

# s3是否为s4的子集
print s3.issubset(s4)
# s3是否为s4的超集
print s3.issuperset(s4)
# 两个集合是不是不相交
print s3.isdisjoint(s4)

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中数据结构之列表,元组,字典,集合 的相关文章

  • 计算机网络常见面试题总结(二)

    本文主要内容转载自 http blog csdn net u013408431 article details 62442670 locationNum 10 fps 1 面试中网络方面的知识被问到的概率很大 尤其是互联网公司 要熟悉osi
  • 垃圾短信识别python步骤详细_python数据挖掘第三篇-垃圾短信文本分类

    文本分类总体上包括8个步骤 数据探索分析 数据抽取 文本预处理 分词 去除停用词 文本向量化表示 分类器 模型评估 重要python库包括numpy 数组 pandas 用于处理结构化数据 matplotlib 绘制词云 便于直观表示 sk
  • java压缩包打不开_java.util.zip.ZipException: error in opening zip file 问题处理

    java util zip ZipException error in opening zip file 这个问题的字面意思是压缩包打不开 我这出现的问题是jar包损坏 打不开 linux系统可以使用命令判断jar 是否正常 jar vtf
  • Axure RP 万能的标签切换面板-动态面板切换

    切换面板在网页中算是非常常见的 如视频网站的电视剧分类标签 资讯网站的资讯分类等 这些交互效果都可以利用动态面板的几个状态来进行相互切换得来 下面来介绍一下如何制作这样的标签 步骤1 从部件库中拖拽一个动态面板到线框图编辑区中 并在 部件交
  • STM32Cube HAL库——ADC电压采集

    STM32Cube HAL库 ADC电压采集 一 ADC基本介绍 模拟数字转换器 即A D转换器 或简称ADC Analog to Digital Converter 通常是指一个将模拟信号转变为数字信号的电子元件 通常的模数转换器是将一个
  • 斗地主游戏

    牌属性类 package Java project 1 import java util Objects public class Card private String size 点数 private String color 花色 pr
  • UE4:自定义Slate 点击保存 出现USlot ReleaseSlateResources() 异常

    Error AssetLog Test uasset Leak Detected CustomWidget 43 CustomWidget still has living Slate widgets it or the parent Ca
  • pyQt5 学习笔记(19)QFrame 边框设置

    文章目录 一 QFrame 简介 二 QFrame 的创建 三 组合效果图 四 QFrame 的功能 API 1 功能 2 QFrame 结构 3 使用总结 1 挑选目标样式 2 根据参数写程序 五 信号 一 QFrame 简介 QFram
  • mysql 数组_MySQL如何实现数组功能

    前段时间想要用数组功能实现某些需求 结果发现mysql不支持数组 这个确实让人很头痛 查阅官方文档 也没有这一方面的资料 结果在网上 看到了某仁兄贴出了变相实现的一种方法 代码如下 DELIMITER DROP DATABASE IF EX
  • 【Ubuntu】使用grub2挂载NFS根文件系统(rootfs)

    经常调试arm开发板的同学应该比较熟悉uboot 它可以使用tftp自动下载内核并通过nfs挂载rootfs 其实 作为x86平台常见的bootloader grub也可以做到通过nfs挂载rootfs 安装grub2 目前新版的ubunt
  • 云vscode搭建--使用容器化部署

    Vscode作为一个轻量级的IDE 其支持丰富的插件 而通过这些插件我们就可以实现在Vscode中写任何语言的代码 Code Server是Vscode的网页版 启动Code Server之后我们就可以在浏览器中打开vscode来愉快的编写
  • java 分页page_java分页PageHelper的使用

    我以前写分页都是些工具类后面偶然的机会发现了这个pagehelper在github上开源框架 maven依赖 com github pagehelper pagehelper 5 1 6 只需要在service层加上然后在controlle
  • 网络安全单兵工具 -- YAKIT

    网络安全单兵工具 YAKIT 一 下载及安装 1 原作者及下载地址 https github com yaklang yakit 2 双击下载好的exe文件 点击核心引擎安装与升级 3 点击意见更新Yak引擎 4 以管理员启动 5 点击连接
  • 《从Paxos到ZooKeeper》读书笔记之第一章(二)

    从Paxos到ZooKeeper 读书笔记之第一章 二 1 2从ACID到CAP BASE 这一节由三小节 从大家数值的数据库事务的四个特性 引出来分布式事务的概念 通过对ACID模型的讨论 提出如何构建一个兼顾可用性和一致性的分布式系统方
  • 前端技术面试大全

    快速搞定前端技术一面 匹配大厂面试要求 迅速建立初中级前端面试 0 2年 JS知识体系 掌握解决面试题的思路与技巧 知识点介绍 CSS 布局 定位 移动端响应式 ES语法 原型 原型链 作用域 闭包 异步 单线程 Web API DOM B
  • SQL复习要点

    1 数据库系统阶段的数据管理特点 1 数据结构化2 数据共享性高 冗余度小 易扩充 3 数据独立性高4 统一的数据管理和控制功能 2 数据库 database DB 是存放数据的仓库 3 数据库管理系统 data base manageme
  • js 截取字符串里的IP和port

    例如 str 192 168 12 254 18081 1 用 ip和port 的正则 let ip reg d gi let ip ip reg exec str ip ip 0 let port reg d 1 5 let port s
  • C++,菱形继承和虚继承

    一 菱形继承的基本概念 菱形继承又称为钻石继承 由公共基类派生出多个中间子类 又由多个中间子类共同派生出汇聚子类 汇聚子类会得到 中间子类从公共基类继承下来的多份成员 菱形继承的格式 A 公共基类 B C 中间子类 D 汇聚子类 示例 in
  • 读《企业中的开放源代码》有感

    文章目录 开源代码的益处 开源的本质 开源是一门学科 开源代码的益处 学习出色编码技能的最佳方法是开发开源项目 注意是开发而不是阅读 因为可以研究该领域内顶尖编码员所采用的实践 以更快的方式启动新项目 从此没有必要再闭门造车 开源的本质 我
  • Linux平台下二进制安装FastDDS

    1 Linux平台下二进制安装 该页面主要介绍在linux环境下 使用二进制release安装 eProsima公司的 Fast DDSThe 安装 内容 运行应用 在一个CMake项目中包含Fast DDS 卸载 1 1 安装 ePros

随机推荐

  • 规则动词的过去式及发音规则

    规则动词的过去式词尾变化有几种 1 一般情况下加ed 如watched planted watered pulled climbed picked 2 以不发音字母e结尾的加d 如liked moved tasted 3 以辅音字母加y结尾
  • 线程池使用之自定义线程池

    目录 一 Java内置线程池原理剖析 二 ThreadPoolExecutor参数详解 三 线程池工作流程总结示意图 四 自定义线程池 参数设计分析 1 核心线程数 corePoolSize 2 任务队列长度 workQueue 3 最大线
  • Java学习心得8——继承

    当我们需要设计几个类似的类的时候 我们可以把它们之间的相同的东西提取出来放到一个父类中 然后这几个类就可以不写这些相同的东西 只要去继承那个父类就可以得到这些东西了 假如我们需要设计三个类Fish Bird Dog 它们的共同点是都有年龄
  • UE4 实现用鼠标旋转场景中的物体

    本文实现的是用在UE4 中用鼠标旋转场景中的物体 点击到物体时开始物体旋转功能 移动鼠标物体跟着旋转相应的角度 松开鼠标左键物体停止旋转 下面介绍实现此功能的蓝图逻辑 由于比较简单就不一一介绍了 直接贴上蓝图代码 如有问题欢迎交流
  • dpkg:警告:无法找到软件包 XXX的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。(详细的解决过程)

    1 问题描述 在使用sudo apt get update 和upgrade中会出现 dpkg 警告 无法找到软件包ca certificates 的文件名列表文件 现假定该软件包目前没有任何文件被安装在系统里 dpkg 警告 无法找到软件
  • docker gitlab 数据 迁移 2770

    我的操作步骤 1 把 gitlab目录下 的 data etc log 目录下压缩并拷贝 2 把压缩文件 拷贝到新的gitlab 指定目录下 3 启动 错误 up to date storage directory var opt gitl
  • Qt中使用OpenGL渲染视频

    Qt5 4之后 OpenGL在Qt中可以通过QOpenGLWidget和QOpenGLFunctions来实现 以下Demo 只展示OpenGL相关部分 解码出AVFrame后对其进行渲染 顶点Shader static const cha
  • go语言基础-----24-----命令行解析Go flag、uuid唯一ID

    一 命令行解析Go flag 1 定义flag参数的相关函数 参数有三个 第一个为 参数名称 第二个为 默认值 第三个是 使用说明 1 通过 flag String Bool Int 等 flag Xxx 方法 该种方式返回一个相应的指针
  • powershell初探(九)

    最近公司需要用到com 其中涉及到很多的注册问题 记录在这里 希望在帮到别人的同时 也能解决自己的问题 0 写在前面 本人菜鸟一枚 本章的总结都来自于网络 如果有错漏之处 还望牛人指正 1 COM是做什么用的 com是包含了实现一个或多个接
  • jQuery 入门教程(15): 删除HTML元素

    jQuery使用下面两个方法来删除或是清空某个HTML元素 remove 删除指定的元素 包括其子元素 empty 清空指定元素的子元素 例如 html view plain copy print
  • 通过查看Qt助手(QtAssistant)了解并使用自己需要Qt库

    常用库 我们需要知道常用的库有哪些 才能使用他们 QtCore基本库 基本数据类型 QString 不直接使用c 中String QByteArray 字节数组 基本数据结构 QList QVector QMap 输入输出类 QTextSt
  • MFC中删除控件的操作

    一 手动删除 1 首先确定控件有哪些相关的变量和函数 打开 rc2文件在里面删除对应的控件图标 2 打开主对话框头文件 一般类向导生成的函数和变量定义都在头文件的最后一个 public l里 找到生成的变量定义和函数定义将其删除 3 打开对
  • 计算机专业推荐游戏本,十大游戏笔记本电脑排名 热门游戏本推荐

    1 惠普 暗影精灵4 Pro 15 6英寸游戏本 暗影精灵4 Pro最吸引人的点莫过于搭载了新一代GeForce RTX2060显卡 拥有6G显存 性能提升高达6倍 并将AI增强图形技术和光线追踪技术引入游戏 让游戏世界可以模拟每道光迹的真
  • Quick Test Professional9.0编程常用方法及实例详解

    通过QTP获取Web页面中对象属性 在制作自动化用例时需要知道大部分控件的name值 我们不可能都向开发人员询问 QTP为我们提供了一个很好的工具 Object Spy 使用它可以为我们把每个需要的对象属性全部列出来 打开QTP 工具 对象
  • 解决keil5仿真提示内存不对齐

    仿真提示 JLink Warning Mis aligned memory write Address 0x20000000 NumBytes 2 Alignment 2 Halfword aligned 解决办法 将keil安装目录D K
  • Manjaro linuxqq闪退问题

    删除配置文件即可 rm r config QQ
  • Java中的抽象类和接口有什么区别(面试题)

    Java中的抽象类和接口有什么区别 面试题 概念 对比 补充 概念 抽象类 在面向对象的概念中 所有的对象都是通过类来描绘的 但是反过来 并不是所有的类都是用来描绘对象的 如果一个类中没有包含足够的信息来描绘一个具体的对象 这样的类就是抽象
  • 【深度】区块链技术安全威胁分析(附下载)

    解码区块链 专题文章一 区块链技术安全威胁分析 2020年4月20日 国家发改委明确 新基建 定义和范围 表态 区块链 被纳入其中 为深入探索区块链技术的发展应用 挖掘对零售行业产生的影响和机遇 苏宁零售技术研究院联合业内资深学者和企业技术
  • MSP432 串口通信

    文章目录 MSP432P401R基础使用 四 串口收发 一 MSP432P401R串口资源 二 UART模式的特性 三 库函数 四 一般配置步骤 五 代码 MSP432P401R基础使用 四 串口收发 一 MSP432P401R串口资源 详
  • python中数据结构之列表,元组,字典,集合

    一 列表 列表 引入一个新的概念 数据结构 数据结构是通过某种方式组织在一起的数据元素的集合 这些数据元素可以是数字或字符 甚至可以是其他数据结构 在 python 中 最基本的数据结构是序列 序列中的每个元素匾被分配一个序号 即元素的位置