Day 04 python学习笔记

Python数据容器

元组

元组的声明
变量名称=(元素1,元素2,元素3,元素4…….)   (元素类型可以不同)

eg:
tuple_01 = ("hello", 1, 2,-20,[11,22,33])
print(type(tuple_01))结果:
<class 'tuple'>

元组的定义

定义空元组
变量名称=()
变量名称=tuple()

元组的嵌套

((),())
下标索引取出元素====与列表相同

元组的强制转换

typle()  强制转换

元组与列表的区别:

  1. 符号:元组( )         列表[ ]
  2. 元组的元素一旦定义,不可更改     而列表可以   (最大的区别)
eg:
tuple_01[1] = "l love you"结果:
Traceback (most recent call last):File "D:\pycharm\main.py", line 5, in <module>tuple_01[1] = "l love you"
TypeError: 'tuple' object does not support item assignment因为元组的元素一旦定义,不可更改

但是:元组里列表元素里的值可以改变

eg:
tuple_01 = ("hello", 1, 2,20,[11,22,33])
print(tuple_01)
tuple_01[-1][0] = "l love you"
print(tuple_01)结果:
('hello', 1, 2, 20, [11, 22, 33])
('hello', 1, 2, 20, ['l love you', 22, 33])

元组切片

元组的切片和字符串、列表的切片是一样的

eg:
tuple_01 = ("hello", 1, 2,-20,[11,22,33])
print(tuple_01[1:4])   结果:
(1, 2, 20)

推荐网站:python在线演示  Python compiler - visualize, debug, get AI help from ChatGPT

这个可以让你清晰的观看到python的运行过程   (这是python官方网站,用图清晰的表示代码的运行顺序)

元组、列表、字符串公用的方法

len ()           求元组的长度(与字符串、列表用法相同)

eg:
tuple_01 = ("hello", 1, 2,20,[11,22,33])
len(tuple_01)
print(len(tuple_01))结果:
5

max (列表/字符串/元组名)        求最大 值 (若是字符、字母按照ASCII码表进行比较)

min (列表/字符串/元组名)         求最小值(若是字符、字母按照ASCII码表进行比较)

元组的注意事项:

元组的特殊写法:t = 1,  2, 3  也是元组

eg:
t = (1, 2, 3)
print(type(t))
t1 = 1, 2, 3
print(type(t1))结果:
<class 'tuple'>
<class 'tuple'>

单个数字  t = (2)     这是整型,因为解释器认为 () 是运算符

解决方法  t = (2, )   这即是元组

结论:只有一个元素时,元组后面必须带 ,

eg:
t1 = (2)
print(type(t1))
t2 = (2, )
print(type(t2))结果:
<class 'int'>
<class 'tuple'>

元组的乘法

eg:
>>> t=(22,)
>>> t*10
(22, 22, 22, 22, 22, 22, 22, 22, 22, 22)
>>>

元组的方法:

index

元组.index(元素)        查询某元素下标

eg:
>>> t=(75,23,22,12,1)
>>> t
(75, 23, 22, 12, 1)
>>> t.index(22)
2          #索引下标为2时为22
>>> t.index(222)    #没有时报错
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
>>>

count

元组.count(元素)        统计某元素在列表中的数量

eg:
>>> t1=(1,2,3,4,2,2,2,3)
>>> t1
(1, 2, 3, 4, 2, 2, 2, 3)
>>> t1.count(2)
4
>>>

因为元组不能更改,所以他的方法只有两种

并且看过我Day 03学习笔记的应该了解,这两种方法在列表里也有

集合

不支持元素重复,内部元素无序   (可用于去重)
变量名称={元素,元素,元素..........}   
变量名称=set()  (创建空集合的唯一办法)

注意:{ 元素 }    { }内至少有一个元素,此时才是集合,无元素为空集合

set_01={'gouxin','zhangsan','gouxin','zhangsan','gouxin','zhangsan'}
print(set_01)



 

eg:
set_01 = set("12345")  #名称尽量不要起set,这是关键字,set()函数,
print(set_01)          #大部分解释器会报错
set_02 = set("123451111111122223333444")
print(set_02)
set_03 = set([1,2,3,4])  #可能解释器会爆红,这是不推荐,但可以
print(set_03)
set_04 = set([1,2,3,4,1,1,1,1,2,2,2])
print(set_04)
set_05 = set((10,20,30,1,1,1))
print(set_05)d = {"姓名":"zs","年龄":18
}                #简单的字典形式,后面会详细讲
set_06 = set(d)  #转换为集合
print(set_06)结果:
{'2', '3', '4', '1', '5'}  #无序的,你第二遍运行可能就会不同
{'2', '3', '4', '1', '5'}  #去除重复的元素
{1, 2, 3, 4}         #按大小顺序给我们显示出来
{1, 2, 3, 4}         #也会给我们去重
{1, 10, 20, 30}      #按大小顺序给我们显示出来,同时去重
{'年龄', '姓名'}      #会把字典里的键名放在集合里

变量名称 = set( 元素 )    元素数据类型只能是字符串、列表、元组、字典

变量名称 = { 元素}   元素数据类型只能是数字、字符串、元组

集合的方法

常用操作
不支持下标索引访问(因为集合本身是无序的)
允许修改

集合.add(元素)将指定的元素添加到集合内
1集合.update(2集合)将两集合合并,合并到1集合里(2集合不变)
集合.remove(元素)将指定的元素,从集合中移除
集合.pop()随机取出一个元素
集合.discard(元素)删除指定元素,不存在不做任何操作
集合一.intersection(集合二)集合一与集合二的交集,原集合不变
集合一.union(集合二)两个集合进行合并 ,原集合不变
集合一.difference(集合二)差集,取出集合一有而集合二没有的,原集合不改变

集合一.difference_update(集合二)
消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变
集合.clear()清空集合
len(集合)统计集合中元素的数量
集合.copy()       拷贝集合
for in集合的遍历

add
集合.add(元素)        将指定的元素添加到集合内
eg:
set_01 = {1,2,3,"l love"}
print(set_01)
set_01.add("you")   
print(set_01)结果:
{1, 2, 3, 'l love'}
{'you', 1, 2, 3, 'l love'}    #因为集合本身是无序的

update

1集合.update(2集合)        将两集合合并,合并到1集合里(2集合不变)

eg:
print(set_01)
set_02 =(4,5,6)
print(set_02)
set_01.update(set_02)
print(set_01)
print(set_02)结果:
{1, 2, 3, 'l love', 'you'}
(4, 5, 6)
{1, 2, 3, 'l love', 4, 5, 6, 'you'}  #集合的排列是随机排列的
(4, 5, 6)

remove

集合.remove(元素)        将指定的元素,从集合中移除

eg:
print(set_01)
set_01.remove(4)
print(set_01)
set_01.remove(4)结果:
{1, 2, 3, 4, 5, 6, 'you', 'l love'}
{1, 2, 3, 5, 6, 'you', 'l love'}
Traceback (most recent call last):     #4不存在,报错File "D:\pycharm\main.py", line 39, in <module>set_01.remove(4)
KeyError: 4

pop

集合.pop()        随机取出一个元素

eg:
print(set_01)
set_01.pop()
print(set_01)结果:
{1, 2, 3, 4, 5, 6, 'l love', 'you'}
{2, 3, 4, 5, 6, 'l love', 'you'}

discard

集合.discard(元素)        删除指定元素,不存在,则不做任何操作

eg:
print(set_01)
set_01.discard("you")
print(set_01)
set_01.discard("you")    #不存在,也不会报错
print(set_01)结果:
{1, 2, 3, 4, 5, 6, 'you', 'l love'}
{1, 2, 3, 4, 5, 6, 'l love'}
{1, 2, 3, 4, 5, 6, 'l love'}    #不存在,则不做任何操作

交集和并集

&   交集          求相交的(共有的)

|    并集          求合并的(两集合合并,并且去重)

eg:
set_01 = {1,2,3,5,6,"l love"}
set_02 = {4,5,6,"l love","you"}
print(set_01 & set_02)    #求相交的(共有的)
print(set_01 | set_02)    #求合并的(两集合合并,并且去重)
print(set_01)
print(set_02)结果:
{'l love', 5, 6}   
{1, 2, 3, 'you', 5, 6, 4, 'l love'}
{1, 2, 3, 5, 6, 'l love'}    #不会改变集合本身
{'you', 4, 5, 6, 'l love'}

intersection

集合一.intersection(集合二)        求集合一与集合二的交集

eg:
print(set_01)
print(set_02)
set_01.intersection(set_02)  #与&的效果相同
print(set_01.intersection(set_02))
print(set_01)    #不会改变集合本身
print(set_02)结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}
{'l love', 5, 6}
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}

union

集合一.union(集合二)      两个集合进行合并 ,原集合不变  

eg:
print(set_01)
print(set_02)
set_01.union(set_02)
print(set_01.union(set_02))
print(set_01)      #不会改变集合本身
print(set_02)结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 'l love', 6, 'you'}
{1, 2, 3, 4, 5, 6, 'l love', 'you'}  #与 | 的效果相同,会去重
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 'l love', 6, 'you'}

difference

集合一.difference(集合二)       差集,取出集合一有而集合二没有的,原集合不改变 

eg:
print(set_01)
print(set_02)
set_01.difference(set_02)
print(set_01.difference(set_02))
print(set_01)
print(set_02)结果:
{1, 2, 3, 'l love', 5, 6}
{'l love', 4, 5, 6, 'you'}
{1, 2, 3}        #取出合一有而集合二没有的,原集合不改变
{1, 2, 3, 'l love', 5, 6}
{'l love', 4, 5, 6, 'you'}

difference_update

集合一.difference_update(集合二)        消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变

eg:
print(set_01)
print(set_02)
set_01.difference_update(set_02)   
print(set_01.difference_update(set_02))
print(set_01)
print(set_02)结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}
None         #因为已经进行过一次了,使集合一已经发生改变,无操作返回None
{1, 2, 3}    #集合一改变
{4, 5, 6, 'l love', 'you'}   #集合二不变

clear

集合.clear()        清空集合

eg:
print(set_01)
print(set_02)
set_01.clear()
print(set_01)
print(set_01.clear())
print(set_01)
print(set_02)结果:
{1, 2, 3, 5, 6, 'l love'}
{'you', 4, 5, 6, 'l love'}
set()    #清空集合后返回一个set()函数,表示空集合
None     #空集合无可清空,即返回None
set()    #返回一个set()函数,表示空集合
{'you', 4, 5, 6, 'l love'}

len

len(集合)        集合中元素的数量

eg:
print(set_01)
len(set_01)     #统计集合中元素的个数,不会直接打印
print(len(set_01))   
print(set_01)结果:
{1, 2, 3, 'l love', 5, 6}
6
{1, 2, 3, 'l love', 5, 6}    #不改变集合本身

copy

集合.copy()        拷贝集合

eg:
print(set_01)
set_01.copy()   #拷贝集合的内容,不打印
print(set_01.copy())
print(type(set_01.copy()))    
print(set_01)结果:
{1, 2, 3, 'l love', 5, 6}
{1, 2, 3, 'l love', 5, 6}
<class 'set'>     #类型还是集合
{1, 2, 3, 'l love', 5, 6}   #不改变集合本身

扩展:

在python内置解释器里,对于上述操作显示不需要了,可以用于清屏,之前的操作还是存在的

>>>import os
>>>os.system("cls")

字典

字典的定义:

字典:键值对的形式存在 (key(键):value(值))     

关键字(即键)不可变           不重复(重复会爆红)        无下标索引
按照key找到value
键 可以为任意不可变数据(元组,数字,字符串)

eg:
my_dict={
key:value, #键值对
key:value,
key:value
}

创建空字典

my_dict={ }
my_dict=dict()

eg:
dict_00 = {}     #注意:这是字典不是集合
print(type(dict_01))
print(dict_00)dict_01 = {"uname":"zhangsan",   #键是字符串(最常见)"age":18,1:18,                 #键是数字(1,2,3):18            #键是元组
}
print(type(dict_01))
print(dict_01)dict_02 = dict()
print(type(dict_02))
print(dict_02)dict_03 = dict((["uname","zhangsan"],["age",18]))  #赋值方式
print(type(dict_03))
print(dict_03)结果:
<class 'dict'>
{}  
<class 'dict'>     #类型字典
{'uname': 'zhangsan', 'age': 18, 1: 18, (1, 2, 3): 18}   #字典的内容
<class 'dict'>
{}                 #空字典
<class 'dict'>
{'uname': 'zhangsan', 'age': 18}     

字典的方法

字典[key]=value新增元素
del 字典[key]删除元素
字典[key]=value更新元素
字典[key]查询元素(值)
字典.get(key)查询元素(值)
字典.pop(key)删除元素
字典.clear()清空元素
字典.keys()获取全部key
1、for key in keys: 2、for key in 字典遍历字典
len()统计字典的元素数量

字典[key]=value        新增元素

eg:
dict_01 = {"姓名":"张三","年龄":18
}
print(dict_01)dict_01["技能"] = "python"
print(dict_01)结果:
{'姓名': '张三', '年龄': 18}
{'姓名': '张三', '年龄': 18, '技能': 'python'}

删(del关键字)

del 字典[key]                删除元素

eg:
print(dict_01)
del dict_01["姓名"]
print(dict_01)结果:
{'姓名': '张三', '年龄': 18, '技能': 'python'}
{'年龄': 18, '技能': 'python'}

改(重新赋值)

字典[key]=value          更新元素

eg:
print(dict_01)
dict_01["技能"] = "安全渗透"
print(dict_01)结果:
{'年龄': 18, '技能': 'python'}
{'年龄': 18, '技能': '安全渗透'}

字典[key]             查询元素(值)  

eg:
print(dict_01)
print(dict_01["技能"])结果:
{'年龄': 18, '技能': '安全渗透'}
安全渗透

查(get函数)

字典.get(key)               查询元素(值)

get函数用于在字典中获取指定键的值,可以设置默认返回值,在找的键不存在时,就会将默认值返回出来

eg:
print(dict_01)
print(dict_01.get("技能"))
print(dict_01.get("姓名"))
print(dict_01.get("姓名","l love you"))   #修改默认值结果:
{'年龄': 18, '技能': '安全渗透'}
安全渗透
None       #若获取的东西没有时,返回None(表示无)
l love you    #将默认值修改





字典的嵌套

my_dict={
key:{
        key:value, #键值对
        key:value,
        key:value
    }

}

eg:
my_dict={
"王力宏":{"语文":77,"数学":66,"英语":33},
"周杰伦":{"语文":88,"数学":86,"英语":55},
"林俊杰":{"语文":99,"数学":96,"英语":66}
}
print(my_dict["王力宏"]["语文"])结果:
77

练习:

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

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

相关文章

uniapp实现微信小程序隐私协议组件封装

uniapp实现微信小程序隐私协议组件封装。 <template><view class"diygw-modal basic" v-if"showPrivacy" :class"showPrivacy?show:" style"z-index: 1000000"><view class"diygw-dialog diygw-dialog-modal bas…

求各区域热门商品Top3 - HiveSQL

背景&#xff1a;这是尚硅谷SparkSQL练习题&#xff0c;本文用HiveSQL进行了实现。 数据集&#xff1a;用户点击表&#xff0c;商品表&#xff0c;城市表 题目: ① 求每个地区点击量前三的商品&#xff1b; ② 在①的基础上&#xff0c;求出每个地区点击量前三的商品后&a…

MySQL-MVCC(Multi-Version Concurrency Control)

MySQL-MVCC&#xff08;Multi-Version Concurrency Control&#xff09; MVCC&#xff08;多版本并发控制&#xff09;&#xff1a;为了解决数据库并发读写和数据一致性的问题&#xff0c;是一种思想&#xff0c;可以有多种实现方式。 核心思想&#xff1a;写入时创建行的新版…

Windows安装Docker并创建Ubuntu环境及运行神经网络模型

目录 前言在Windows上安装Docker在Docker上创建Ubuntu镜像并运行容器创建Ubuntu镜像配置容器&#xff0c;使其可以在宿主机上显示GUI 创建容器并运行神经网络模型创建容器随便找一个神经网络模型试试 总结 前言 学生党一般用个人电脑玩神经网络&#xff0c;估计很少有自己的服…

TouchGFX之后端通信

在大多数应用中&#xff0c;UI需以某种方式连接到系统的其余部分&#xff0c;并发送和接收数据。 它可能会与硬件外设&#xff08;传感器数据、模数转换和串行通信等&#xff09;或其他软件模块进行交互通讯。 Model类​ 所有TouchGFX应用都有Model类&#xff0c;Model类除了存…

【计算机】CPU,芯片以及操作系统概述

1.CPU 什么是CPU? CPU&#xff08;Central Processing Unit&#xff09;是计算机系统的运算和控制核心&#xff0c;是信息处理、程序运行的最终执行单元&#xff0c;相当于系统的“大脑”。 CPU的工作流程&#xff1f; CPU 的工作流程分为以下 5 个阶段&#xff1a;取指令…

苹果ios系统ipa文件企业签名是什么?优势是什么?什么场合需要应用到?

企业签名是苹果开发者计划中的一种签名类型&#xff0c;允许企业开发者签署和分发企业内部使用的应用程序&#xff0c;而无需通过App Store进行公开发布。通过企业签名&#xff0c;企业可以在内部部署自己的应用程序&#xff0c;以满足特定的业务需求。 企业签名能够做到以下…

【JVM】 类加载机制、类加载器、双亲委派模型详解

文章目录 前言一、类加载机制二、类加载器三、双亲委派模型总结 前言 &#x1f4d5;各位读者好, 我是小陈, 这是我的个人主页 &#x1f4d7;小陈还在持续努力学习编程, 努力通过博客输出所学知识 &#x1f4d8;如果本篇对你有帮助, 烦请点赞关注支持一波, 感激不尽 &#x1f4d…

【改进哈里鹰算法(NCHHO)】使用混沌和非线性控制参数来提高哈里鹰算法的优化性能,解决车联网相关的路由问题(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

嵌入式Linux应用开发-驱动大全-同步与互斥①

嵌入式Linux应用开发-驱动大全-同步与互斥① 第一章 同步与互斥①1.1 内联汇编1.1.1 C语言实现加法1.1.2 使用汇编函数实现加法1.1.3 内联汇编语法1.1.4 编写内联汇编实现加法1.1.5 earlyclobber的例子 1.2 同步与互斥的失败例子1.2.1 失败例子11.2.2 失败例子21.2.3 失败例子3…

互联网Java工程师面试题·MyBatis 篇·第二弹

目录 16、Xml 映射文件中&#xff0c;除了常见的 select|insert|updae|delete标签之外&#xff0c;还有哪些标签&#xff1f; 17、Mybatis 的 Xml 映射文件中&#xff0c;不同的 Xml 映射文件&#xff0c;id 是否可以重复&#xff1f; 18、为什么说 Mybatis 是半自动 ORM 映射…

2023年中国体育赛事行业现状及趋势分析:体育与科技逐步融合,推动产业高质量发展[图]

体育赛事运营是指组织体育赛事或获取赛事版权&#xff0c;并进行赛事推广营销、运营管理等一系列商业运作的运营活动。体育赛事运营相关业务主要包括赛事运营与营销、赛事版权运营两个部分。 体育赛事运营行业分类 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#x…

5.外部中断

中断初始化配置步骤&#xff1a; IO口初始化配置 开启中断总允许EA 打开某个IO口的中断允许 打开IO口的某一位的中断允许 配置该位的中断触发方式 中断函数&#xff1a; #pragma vector PxINT_VECTOR __interrupt void 函数名(void){}#pragma vector PxINT_VECTOR __int…

开源白板工具 Excalidraw 架构解读

本文讲解开源白板工具 Excalidraw 的架构设计。 版本 0.16.1 技术栈 Vite React TypeScript Yarn Husky。 脚手架原来是用的是 Create React App&#xff0c;但这个脚手架已经不维护了&#xff0c;一年多没发布新版本了。 目前市面上比较流行的 React 脚手架是 Vite&…

RabbitMQ的基本介绍

什么是MQ 本质是一个队列&#xff0c;只不过队列中存放的信息是message罢了&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递信息。在互联网架构中&#xff0c;MQ是一种非常常见的上下游“逻辑解耦物理解耦”的消息通信服务。使用了MQ之后&#xff0c;信息发送…

嵌入式Linux应用开发-驱动大全-同步与互斥④

嵌入式Linux应用开发-驱动大全-同步与互斥④ 第一章 同步与互斥④1.5 自旋锁spinlock的实现1.5.1 自旋锁的内核结构体1.5.2 spinlock在UP系统中的实现1.5.3 spinlock在SMP系统中的实现 1.6 信号量semaphore的实现1.6.1 semaphore的内核结构体1.6.2 down函数的实现1.6.3 up函数的…

用于工业物联网和自动化的 Apache Kafka、KSQL 和 Apache PLC4

由于单一系统和专有协议&#xff0c;数据集成和处理是工业物联网&#xff08;IIoT&#xff0c;又名工业 4.0 或自动化工业&#xff09;中的巨大挑战。Apache Kafka、其生态系统&#xff08;Kafka Connect、KSQL&#xff09;和 Apache PLC4X 是以可扩展、可靠和灵活的方式实现端…

【文献阅读】Pocket2Mol : 基于3D蛋白质口袋的高效分子采样 + CrossDocked数据集说明

Pocket2Mol: Efficient Molecular Sampling Based on 3D Protein Pockets code&#xff1a; GitHub - pengxingang/Pocket2Mol: Pocket2Mol: Efficient Molecular Sampling Based on 3D Protein Pockets 所用数据集 与“A 3D Generative Model for Structure-Based Drug Desi…

MySQL进阶 —— 超详细操作演示!!!(下)

MySQL进阶 —— 超详细操作演示&#xff01;&#xff01;&#xff01;&#xff08;下&#xff09; 五、锁5.1 概述5.2 全局锁5.3 表级锁5.4 行级锁 六、InnoDB 引擎6.1 逻辑存储结构6.2 架构6.3 事务原理6.4 MVCC 七、MySQL 管理7.1 系统数据库7.2 常用工具 MySQL— 基础语法大…

使用代理IP进行安全高效的竞争情报收集,为企业赢得竞争优势

在激烈的市场竞争中&#xff0c;知己知彼方能百战百胜。竞争对手的信息对于企业来说至关重要&#xff0c;它提供了洞察竞争环境和市场的窗口。在这个信息时代&#xff0c;代理IP是一种实用的工具&#xff0c;可以帮助企业收集竞争对手的产品信息和营销活动数据&#xff0c;为企…