Python基础之元组列表集合字典

目录

  • 一、元组(Turple)
    • 1.1、概念
      • 定义
      • 注意事项
    • 1.2、常见操作
      • 元组只支持查询操作,不支持增删改操作。
      • 查询元素
  • 二、列表
    • 1.1、概念
      • 定义
      • 注意事项
    • 1.2、常见操作
      • 添加
      • 修改
      • 查找
      • 删除
      • 排序
      • 列表推导式
      • 列表嵌套
  • 三、集合
    • 1.1、概念
      • 定义
      • 集合的特点
    • 1.2、常见操作
      • 添加元素
      • 删除元素
      • 交集&,并集|
      • 应用场景
  • 四、字典
    • 1.1、概念
      • 定义
      • 注意事项
    • 1.2、常见操作
      • 查看元素
      • 修改元素
      • 添加元素
      • 删除元素
      • 其他操作
    • 1.3、字典应用场景

一、元组(Turple)

1.1、概念

定义

元组名 = (元素1,元素2,元素3)

注意事项

  1. 使用小括号进行数据保存,所有元素包含在小括号内,元素与元素之间用“,”隔开
  2. 不同元素也可以是不同的数据类型
  3. 元素只包含一个元素的时候,末尾必须加“,”,否则返回的是唯一数据类型

1.2、常见操作

元组只支持查询操作,不支持增删改操作。

元组在Python中是一种不可变的、有序的数据容易。

tua = ()  # 定义空元组
print(tua, type(tua))  # () <class 'tuple'>
tua = (1)  # 元组包含一个元素时,末尾必须加“,”,否则返回的是<class 'int'>
print(tua, type(tua))  # () <class 'tuple'>

查询元素

  1. in:判断某个元素是否存在与元组中,存在就返回True,不存在则返回False。
  2. not in:判断某个元素是否存在与元组中,不存在就返回True,存在则返回False。
  3. count():统计指定元素在当前列表中出现的次数。
  4. index():返回指定元素所在位置的下标 ,如果查找的元素不存在则报错。
  5. len():求长度
li = ('a','b','b')
print('a' in li) # 判断某个元素是否存在与元组中
print(li.count('a'))
if 'a' in li:print(li.index('a')) #返回指定元素所在位置的下标

二、列表

1.1、概念

列表是最常用的 Python 数据类型,是处理一组有序项目的数据结构。也可以理解为他是一个可变的元组。或者说元组是一个不变的列表。

定义

列表名 = [元素1, 元素2, 元素3, …]

注意事项

  1. 列表的所有元素放在一对中括号[]中,并使用逗号分隔开
  2. 一个列表中的数据类型可以各不相同
  3. 通过下标快速查找对应元素
  4. 列表也可以进行切片操作
li = [1, 2, 'a', 'b']
print(li[2])  # 通过下标迅速查找对应元素
print(li[0:2])  # 对列表进行切片操作
for i in li:  # 列表迭代操作print(i)

1.2、常见操作

添加

append():在列表末尾追加元素(常用)
**extend():分散添加,将另外一个类型中的元素逐一添加 **
insert():在指定位置插入元素,指定位置若有元素则原有元素后移。效率没有append高

list = ['a', 'b']
list.append('c')  # 在列表后面添加元素
list.extend('de')  # 分散添加,将另外一个类型中的元素逐一添加
list.insert(3, 5)  # 在位置3+1的地方插入元素
list.insert(13, 'Py')  # 若位置大于列表长度插入末尾
print(list)  # ['a', 'b', 'c', 5, 'd', 'e', 'Py']

extend():插入的一定是可迭代对象,可迭代对象指的是元组、列表、集合、字典还有字符串。

修改

列表名[下标] = 值

li = [1, 2, 'a', 'b']
li[0] = 'Hello'  # 修改第一个元组
print(li)

查找

in:判断指定数据是否存在列表中,返回值为布尔
not in:判断指定数据是否存在列表中,返回值为布尔
index():返回指定元素所在位置的下标,如果查找的元素不存在报错
count():统计指定元素在当前列表中出现的次数

li = [1, 2, 3]
print(2 in li)          # True
print(2 not in li)      # False
print(4 in li)          # False
print(4 not in li)      # True
li = [1, 2, 3, 4, 2]
print(li.index(2))       # 1
# print(li.index(5))     # 报错,ValueError: 5 is not in list(值错误:5不在列表中)
print(li.count(2))       # 2,出现2次
print(li.count(5))       # 0,出现0次

删除

del :根据下标删除,超出下标范围就报错。
remove():根据元素的值进行删除,如果元素不存在则报错

li = [1, 2, 3, 4, 5]
del li[4]
print(li)                # [1, 2, 3, 4]
# del li[6]              # 报错,IndexError: list assignment index out of range(索引错误:列表下标超出范围)
del li # 删除整个列表
li = [1, 2, 3, 4, 3]
if 1 in li:li.remove(1)
print(li)  # [2, 3, 4, 3]

排序

sort():将列表按特定顺序重新排列,默认从小到大
reverse():倒序,将列表倒置,反过来

li = [2, 5, 3, 4, 1]
li.sort()
print(li)               # [1, 2, 3, 4, 5]
li1 = [2, 5, 3, 4, 1]
li1.reverse()
print(li1)              # [1, 4, 3, 5, 2]

列表推导式

[表达式 for 临时变量 in 列表]
根据列表生成指定需求的列表

li = []                  # 定义一个空列表
for i in range(1, 11):li.append(i)         # 把取出的i值放进列表中     
print(li)                # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

列表嵌套

含义:一个列表中又有一个列表

li = ['a','b','c',['d','e','f']]     # ['d','e','f']是里面的列表

三、集合

1.1、概念

集合(set)是一种基本的数据结构,用于存储不重复的元素。

定义

集合名 = {元素1, 元素2, 元素3…}
集合和字典都是用{}表示,空字典用{}定义,空集合用set()定义。

集合的特点

  1. 无序:定义一个集合后,多次打印会发现顺序改变
  2. 唯一:集合的元素不重复
  3. 确定:集合中的元素必须可hash(散列)
    ** 常见的可hash类型:数值类型、字符串、元组 **
    ** 常见的不可hash类型:列表、字典、集合**

1.2、常见操作

添加元素

add():添加元素,添加的是一个整体

s2 = {1, 2, 3, 4}
print("原集合:", s2)  # 原集合: {1, 2, 3, 4}
s2.add(5)
print('添加后', s2)   # 添加后 {1, 2, 3, 4, 5}
s2.add(2)
print('添加后', s2)   # 添加后 {1, 2, 3, 4, 5},# 因为集合有自动去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进行任何操作。
# s2.add(5,6)        # 报错,一次只能添加一个元素
s2.add((5,6))        # 添加一个元组类型的元素
print('添加后', s2)   # 添加后 {1, 2, 3, 4, 5, (5, 6)}

update():把传入的元素拆分,逐个放入集合中

s2 = {1, 2, 3, 4}
print("原集合:", s2)  # 原集合: {1, 2, 3, 4}
# s2.update(567)     #报错
s2.update('567')
print('添加后', s2)   # 添加后 {1, 2, 3, 4, '5', '6', '7'}

删除元素

remove():选择删除的数字如果集合中有就删除,没有就会报错

s2 = {1, 2, 3, 4}
s2.remove(3)
# s2.remove(5)        # 报错(集合中没有元素5)
print("删除后:", s2)  # 删除后: {1, 2, 4}

discard():选择要删除的元素,有就会删除,没有则不会发生改变,不会进行操作

s2 = {1, 2, 3, 4}
print("原列表:", s2)  # 原列表: {1, 2, 3, 4}
s2.discard(3)
print('删除后:', s2)  # 删除后: {1, 2, 4}
s2.discard(7)
print('删除后:',s2)   # 删除后: {1, 2, 4}

交集&,并集|

交集&:表示共有的部分

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a & b)          # {3, 4}

并集|:表示所有的都放一起,重复的不算

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b)          # {1, 2, 3, 4, 5, 6}

应用场景

可以用于快速去重

四、字典

1.1、概念

键值对形式保存,键和值之间必须用:隔开,键值对之间用,隔开

定义

字典名 = {键1: 值1, 键2: 值2}

dic = {'name': 'bingbing', 'age': 18}
print(type(dic))           # <class 'dict'>

注意事项

字典中的键具备唯一性,但是值可以重复。

1.2、常见操作

查看元素

**变量名[键名] **
**变量名.get(键名) **

dic2 = {'name': 'python', 'name2': 'java'}
# print(dic2[2])       # 不可以根据下标,字典中没有下标,查找元素需要根据键名,键名相当于索引
print(dic2['name'])    # python
# print(dic2['tel'])   # 报错,键名不存在

修改元素

字典名 [键名] = 值

d = {'name': 'python', 'age': 18}
d['age'] = 20    # 列表通过下标修改,字典通过键名修改
print(d)         # {'name': 'python', 'age': 20}

添加元素

**字典名 [键名] = 值 **:键名存在就是修改,不存在则是新增

删除元素

**del:删除指定键值对,键名不存在就会报错 **
**删除整个字典 **
**clear():清空整个字典里面的东西,但保留了这个字典 **

d = {'name': '小明', 'age': 28}
del d['age']      
# del d['remark']      # 没有指定的键就会报错
print("删除后: ", d)   # 删除后:  {'name': '小明'}
del d # 删除整个字典
# print('删除后:' ,d)  # 报错

del 字典是删除整个字典,clear(),清空字典保留这字典。

其他操作

len():求长度
keys():返回字典里面包含所有键名
values():返回字典里面包含所有值
items():返回字典里面包含所有键值对(元组形式)的列表

p = {'name': 'PP', 'age': 33, 'qq': 123456}
print(len(p))  # 3,因为字典中有3对键值对
print(p.keys())  # dict_keys(['name', 'age', 'qq'])
print(p.values())  # dict_values(['PP', 33, 123456])
print(p.items())  # dict_items([('name', 'PP'), ('age', 33), ('qq', 123456)])

1.3、字典应用场景

使用多个键值对,存储描述一个物体的相关信息

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

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

相关文章

Ubuntu 22.04 安装 向日葵远程Client端

通过向日葵主页的下载deb包有可能遇到安装失败的情况 #因向向日葵提供的libwebkit包是4.0-37了,而向日葵依赖的是3.0.0(Reading database ... 303666 files and directories currently installed.) Preparing to unpack SunloginClient-10.1.1.38139_amd64.deb.1 ... sunloginc…

Linux中卸载和安装Nginx

阿里云宝塔linux为例一&#xff1a;卸载1.停止 Nginx 服务# 检查Nginx运行状态 systemctl status nginx# 停止Nginx服务 sudo systemctl stop nginx# 禁用开机自启 sudo systemctl disable nginx2. 卸载 Nginx 软件包# 查看已安装的Nginx包 yum list installed | grep nginx# 卸…

C++知识汇总(5)

目录 1.写在前面 1.C11的发展历史 2.序列表初始化 3&#xff0c;C11中的std::initializer_list 4.左值和右值 1.左值引用和右值引用 2.生命周期的延长 3.左值和右值的参数匹配 4&#xff0c;移动构造和移动赋值 5.引用折叠 6.完美转发 总结 1.可变模板参数 2.包扩展…

LeetCode 每日一题 2025/8/25-2025/8/31

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录8/25 498. 对角线遍历8/26 3000. 对角线最长的矩形的面积8/27 3459. 最长 V 形对角线段的长度8/28 3446. 按对角线进行矩阵排序8/29 3021. Alice 和 Bob 玩鲜花游戏8/30 36.…

大模型训练全方位架构分析

文章目录前言一&#xff1a;数据工程二&#xff1a;计算硬件与集群三&#xff1a;训练并行策略四&#xff1a;模型架构五&#xff1a;优化与训练动力学六&#xff1a;内存管理七&#xff1a;训练流程与工具链八&#xff1a;成本与效率九&#xff1a;伦理、安全与对齐十&#xf…

人工智能加速漏洞利用,15分钟即可完成概念验证?

一个由人工智能驱动的攻击研究系统已经创建了十多个漏洞利用程序&#xff0c;在许多情况下将开发时间缩短到不到 15 分钟&#xff0c;凸显了全面自动化对企业防御者的影响。 该系统由两位以色列网络安全研究人员创建&#xff0c;利用大型语言模型 (LLM) 的提示、通用漏洞与暴露…

Go语言入门(13)-map

map是Go提供的另外一种集合&#xff0c;他可以&#xff1a;①将key映射到value;②快速通过key找到对应的value;同时&#xff0c;它的key几乎可以是任何类型。声明map&#xff0c;必须指定key和value的类型&#xff1a;下面来看一个简单的例程&#xff0c;在该例程中&#xff0c…

基于51单片机的配电室远程监控系统设计环境检测GSM环境报警设计

基于51单片机的配电室远程监控系统设计与环境检测GSM报警系统 1. 系统功能介绍 本设计是一种基于 STC89C51/STC89C52 单片机 的智能配电室环境监控与报警系统。该系统将温湿度检测、水位检测、烟雾检测、入侵检测与风扇、水泵控制相结合&#xff0c;同时配合 SIM900 GSM 模块 实…

从RNN到Transformer

从RNN到Transformer 目录 基础篇&#xff1a;序列模型概述RNN循环神经网络LSTM长短期记忆网络Transformer架构时间序列预测应用计算机视觉应用大语言模型应用实战与优化前沿发展 基础篇&#xff1a;序列模型概述 {#基础篇} 什么是序列数据&#xff1f; 序列数据是按照特定顺…

【Java进阶】Java与SpringBoot线程池深度优化指南

Java与SpringBoot线程池深度优化指南Java与SpringBoot线程池深度优化指南一、Java原生线程池核心原理1. ThreadPoolExecutor 核心参数关键参数解析&#xff1a;2. 阻塞队列选择策略3. 拒绝策略对比二、SpringBoot线程池配置与优化1. 自动配置线程池2. 异步任务配置类3. 自定义异…

mysql(自写)

Mysql介于应用和数据之间&#xff0c;通过一些设计 &#xff0c;将大量数据变成一张张像excel的数据表数据页&#xff1a;mysql将数据拆成一个一个的数据页索引&#xff1a;为每个页加入页号&#xff0c;再为每行数据加入序号&#xff0c;这个序号就是所谓的主键。 将每个页的…

Nginx 502 Bad Gateway:从 upstream 日志到 FastCGI 超时复盘

Nginx 502 Bad Gateway&#xff1a;从 upstream 日志到 FastCGI 超时复盘 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般绚烂的技术栈中&#xff0c;我是那个永不停歇的色彩收集者。 &#x1f98b; 每一个优化都是我培育的花朵&#xff0c;每一…

Dreamore AI-解读并描绘你的梦境

本文转载自&#xff1a;Dreamore AI-解读并描绘你的梦境 - Hello123工具导航 ** 一、&#x1f319; 初识 Dreamore AI&#xff1a;你的智能梦境伴侣 Dreamore AI 是一款超有趣的AI 梦境解析与可视化工具&#xff0c;它巧妙地把梦境解读和图像生成这两大功能融为一体。你只需要…

集合-单列集合(Collection)

List系列集合&#xff1a;添加的元素是有序、可重复、有索引的。Set系列集合&#xff1a;添加的元素是无序、不重复、无索引的。代码&#xff1a;public class A01_CollectionDemo1 {public static void main(String[] args) {/** 注意点&#xff1a;Collection是一个接口&…

写一个 RTX 5080 上的 cuda gemm fp16

1. cpu 计算 fp16 四则运算由于会用到cpu 的gemm 与 gpu gemm 的对比验证&#xff0c;所以&#xff0c;这里稍微解释一下 cpu 计算fp16 gemm 的过程。这里为了简化理解&#xff0c;cpu 中不使用 avx 相关的 fp16 运算器&#xff0c;而是直接使用 cpu 原先的 ALU 功能。这里使用…

web渗透PHP反序列化漏洞

web渗透PHP反序列化漏洞1&#xff09;PHP反序列化漏洞反序列我们可以控制对象中的值进行攻击O:1:"C":1:{s:3:"cmd";s:8:"ipconfig";}http://127.0.0.1/1.php?xO:1:%22C%22:1:{s:3:%22cmd%22;s:3:%22ver%22;}常见的反序列化魔术方法&#xff1a;…

FPGA学习笔记——SPI读写FLASH

目录 一、任务 二、需求分析 三、Visio图 四、具体分析 五、IP核配置 六、代码 七、实验现象 一、任务 实验任务&#xff1a; 1.按下按键key1&#xff0c;开启读ID操作&#xff0c;将读出来的ID&#xff0c;通过串口发送至PC端显示&#xff0c;显示格式为“读ID:XX-XX-XX…

一句话PHP木马——Web渗透测试中的隐形杀手

文章目录前言什么是"一句话木马"&#xff1f;常见变种与隐藏技巧1. 函数变种2. 加密混淆3. 变量拆分4. 特殊字符编码上传技巧与绕过防御常见上传绕过技巧检测与防御措施1. 服务器配置2. 上传验证3. 代码审计4. Web应用防火墙(WAF)实战案例分析深度思考&#xff1a;安…

房屋租赁系统|基于SpringBoot和Vue的房屋租赁系统(源码+数据库+文档)

项目介绍 : SpringbootMavenMybatis PlusVue Element UIMysql 开发的前后端分离的房屋租赁系统&#xff0c;项目分为管理端和用户端以及房主端 项目演示: 基于SpringBoot和Vue的房屋租赁系统 运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上…

C++动态规划——经典题目(下)

上一篇文章没有写全&#xff0c;这篇再补两道题酒鬼#include<bits/stdc.h> using namespace std; int dp[110][10]{0}; int a[1010]{0}; int n,m; int main() {cin>>n;dp[0][0]0;dp[1][0]0;dp[1][1]a[1];for(int i1;i<n;i){cin>>a[i];}for(int i2;i<n;…