Python学习之路_day_05(元组、字典、集合类型及字符编码)

2023-11-18

一:基本使用:tuple
1 用途:记录多个值,当多个值没有改的需求,此时用元组更合适

2 定义方式:在()内用逗号分隔开多个任意类型的值
t=(1,1.3,'xx',('a','b'),[1,2]) #t=tuple((1,1.3,'xx',('a','b'),[1,2]))
print(t,type(t))
t1=tuple('hello')
print(t1)

3 常用操作+内置的方法
优先掌握的操作:
1、按索引取值(正向取+反向取):只能取
t=('egon',123,['a','b'])
print(id(t[0]))
print(id(t[1]))
print(id(t[2]))

t[2][0]='A'
print('='*50)
print(id(t[0]))
print(id(t[1]))
print(id(t[2]))
t[0]='EGON'

t[2]='xxxx'
t[2][0]='A'
print(t)

2、切片(顾头不顾尾,步长)
t=(1,2,3,4,5)
print(t[0:3])
print(t)
3、长度

4、成员运算in和not in

5、循环
for item in ('a','b','c'):
    print(item)

需要掌握的操作
t=('a','b','c','a')
print(t.count('a'))
print(t.index('a',1,10))
print(t.index('xxx',1,10))

该类型总结
1 存多个值

2 有序

3 不可变

补充:
不可变类型=》可hash类型
可变类型 =》不可以hash类型

二:基本使用dict
1 用途:记录多个值,每一个值都对应的key用来描述value的作用

2 定义方式:在{}内用逗号分隔开多 个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常情况下应该str类型
dic={0:'aaa',1:'bbb',2:'cccc'} #dic=dict({0:'aaa',1:'bbb',2:'cccc'})
print(dic,type(dic))
print(dic[0])

dic={[1,2]:'aaa'}
dic={(1,2):'aaa'}
print(dic[(1,2)])

用法一:
dic=dict(x=1,y=2,z=3)
print(dic)

用法二:
userinfo=[
    ['name','egon'],
    ['age',18],
    ['sex','male']
]
d={}
for k,v in userinfo: #k,v=['name', 'egon']
    # print(k,v)
    d[k]=v
print(d)

d=dict(userinfo)
print(d)

3 常用操作+内置的方法
优先掌握的操作:
1、按key存取值:可存可取
dic={'name':'egon'}
print(dic['name'])
dic['name']='EGON'
print(dic)
dic['age']=18
print(dic)

l=['a','b']
l[0]='A'
l[2]='c'

2、长度len
dic={'name':'egon','age':18,'name':'EGON','name':'XXXX'}
print(dic)
print(len(dic))

3、成员运算in和not in:字典的成员运算判断的是key
dic={'name':'egon','age':18,}
print(18 in dic)
print('age' in dic)

4、删除
dic={'name':'egon','age':18,}
通用
del dic['name']
print(dic)
del dic['xxx'] ##key不存在则报错

res=dic.pop('age') #删除key对应的value,并返回value
print(dic)
print(res) #
dic.pop('xxx') #key不存在则报错

res=dic.popitem()
print(dic)
print(res)

5、键keys(),值values(),键值对items()
dic={'name':'egon','age':18,}
print(dic.keys())
l=[]
for k in dic.keys():
    l.append(k)
print(l)
print(list(dic.keys()))

print(dic.values())
print(list(dic.values()))
print(dic.items())
print(list(dic.items()))

6、循环
dic={'name':'egon','age':18,'sex':'male'}

for k in dic.keys():
    print(k,dic[k])

for k in dic:
    print(k,dic[k])

for v in dic.values():
    print(v)

for k,v in dic.items():
    print(k,v)

8 dic.get()
dic={'name':'egon','age':18,'sex':'male'}
dic['xxx']
v=dic.get('name')
print(v)

v=dic.get('xxx')
print(v)

需要掌握的操作

dic.fromkeys()的用法:
l=['name','age','sex']
dic={'name':None,'age':None,'sex':None}
dic={}
for k in l:
    dic[k]=None
print(dic)

dic=dic.fromkeys(l,None)
print(dic)

old_dic={'name':'egon','age':18,'sex':'male'}
new_dic={'name':'EGON','x':1,'y':2}
old_dic.update(new_dic)
print(old_dic)

setdefault:有则不动/返回原值,无则添加/返回新值
dic={'name':'egon','age':18}
res=dic.setdefault('name','EGON') # 字典中已经存在key则不修改,返回已经存在的key对应的value
print(dic)
print(res)

res=dic.setdefault('sex','male') # 字典不存在key则添加"sex":"male",返回新的value
print(dic)
print(res)

该类型总结
1 存多个值

2 无序

3 可变
dic={'x':1}
print(id(dic))
dic['x']=2
print(id(dic))

练习1:
nums=[11,22,33,44,55,66,77,88,99,90]
dic={
    'k1':[],
    'k2':[]
}
for num in nums:
    if num > 66:
        dic['k1'].append(num)
    else:
        dic['k2'].append(num)
print(dic)

练习2:
s='hello alex alex say hello sb sb'
words=s.split()
dic={}
# print(words)
for word in words:
    if word in dic:
        dic[word]+=1
    else:
        dic[word]=1

print(dic)

s='hello alex alex say hello sb sb'
words=s.split()
dic={}
for word in words: # word="hello"
    dic.setdefault(word,words.count(word)) #{'hello':2,"alex":2,"say":1,}
print(dic)

 

pythons=['李二丫','张金蛋','李银弹','赵铜蛋','张锡蛋','alex','oldboy']
linuxs=['lxx','egon','张金蛋','张锡蛋','alex','陈独秀']

l=[]
for stu in pythons:
    if stu in linuxs:
        l.append(stu)

print(l)

三:基本使用:set
1 用途: 关系运算,去重

2 定义方式: 在{}内用逗号分开个的多个值
集合的三大特性:
2.1 每一个值都必须是不可变类型
2.2 元素不能重复
2.3 集合内元素无序

s={1,3.1,'aa',(1,23),} # s=set({1,3.1,'aa',(1,23),})
print(s,type(s))

s={1,1,1,1,1,1,1,1,1,2,3}
print(s)

s={'a','b','c'}
s[0]

s=set('hello')
print(s)
print(set(['a','b','c',[1,2]]))

3 常用操作+内置的方法
pythons={'李二丫','张金蛋','李银弹','赵铜蛋','张锡蛋','alex','oldboy'}
linuxs={'lxx','egon','张金蛋','张锡蛋','alex','陈独秀'}
取及报名python课程又报名linux课程的学员:交集
print(pythons & linuxs)
print(pythons.intersection(linuxs))

取所有报名老男孩课程的学员:并集
print(pythons | linuxs)
print(pythons.union(linuxs))

取只报名python课程的学员: 差集
print(pythons - linuxs)
print(pythons.difference(linuxs))

取只报名linux课程的学员: 差集
print(linuxs - pythons)
print(linuxs.difference(pythons))

取没有同时报名两门课程的学员:对称差集
print(pythons ^ linuxs)
print(pythons.symmetric_difference(linuxs))

是否相等
s1={1,2,3}
s2={3,1,2}
print(s1 == s2)

父集:一个集合是包含另外一个集合
s1={1,2,3}
s2={1,2}
print(s1 >= s2)
print(s1.issuperset(s2))

s1={1,2,3}
s2={1,2,4}
print(s1 >= s2)

子集
s1={1,2,3}
s2={1,2}
print(s2 <= s1)
print(s2.issubset(s1))

需要掌握操作
s1={1,2,3}
s1.update({3,4,5})
print(s1)

s1={1,2,3}
res=s1.pop()
print(res)

s1={1,2,3}
res=s1.remove(3) #单纯的删除,返回值为None
print(s1)

s1={1,2,3}
s1.add(4)
print(s1)

s1={1,2,3}
s2={1,2}
s1.difference_update(s2) #s1=s1.difference(s2)
print(s1)

s1={1,2,3}
res=s1.discard(3) ##单纯的删除,返回值为None
print(s1)
print(res)
s1.remove(444444) #删除的元素不存在则报错
s1.discard(444444) #删除的元素不存在不会报错

s1={1,2,3}
s2={1,2,4}
print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True

s1={1,2,3}
s2={4,5,6}
print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True

该类型总结
1 存多个值

2 无序

3 set可变
s={1,2,3}
print(id(s))
s.add(4)
print(id(s))

集合去重
局限性

1、无法保证原数据类型的顺序
2、当某一个数据中包含的多个值全部为不可变的类型时才能用集合去重
names=['alex','egon','alex','alex','egon','lxx']
s=set(names)
print(s)
l=list(s)
print(l)

stus_info=[
    {'name':'egon','age':18},
    {'name':'alex','age':73},
    {'name':'oldboy','age':84},
    {'name': 'egon', 'age': 18},
    {'name': 'egon', 'age': 18},
    {'name': 'egon', 'age': 18},
    {'name': 'oldboy', 'age': 84},

]
# set(stus_info) # 报错
l=[]
for info in stus_info:
    if info not in l:
        l.append(info)

print(l)
stus_info=l
print(stus_info)

 

四、字符编码

一 储备知识点1
    运行程序的三大核心硬件
        cpu
        内存
        硬盘

    运行一个程序:
        代码由硬盘读入内存,cpu从内存中读取指令执行

    强调:程序运行过程中产生的数据一定是最先存放于内存中的

二 储备知识点2
    运行python程序的三个阶段:python test.py
        1、先启动python解释器
        2、将test.py的内容当作普通字符读入内存
        3、python解释器解释执行读入内存的代码,识别python的语法

        python解释器运行程序的前两个阶段跟文本编辑器一模一样
        只有第三个阶段不同


三 字符编码
    人操作计算机使用人类认识的字符,而计算机存放都是二进制数字
    所以人在往计算机里输入内容的时候,必然发生:
        人类的字符------(字符编码表)--------》数字


        ASCII: 用(8位bit二进制数)1Bytes对应一个英文字符
            8bit= 1Bytes
            1024Bytes=1KB
            1024KB=1MB
            1024MB=1GB
            1024GB=1TB
            1024TB=1PB

        GBK:用2Bytes对应一个中文字符,1Bytes对应一个英文字符

        unicode:用2Bytes对应一个字符
            必须满足两大特点:
                1、能够兼容万国字符
                2、与老字符编码都有一种数字与数字的对应关系
        a 1111 0111
        a 0000 0000 1111 0111


        utf-8:Unicode Transformation Format
            一个中文字符:3bytes
            一个英文字符:1bytes


        强调:
            unicode格式的数字--------encode编码---------》utf-8格式的数字
            unicode格式的数字《--------decode解码《---------utf-8格式的数字

 

 

 

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

Python学习之路_day_05(元组、字典、集合类型及字符编码) 的相关文章

  • Linux内核中PF_KEY协议族的实现(4)

    本文档的Copyleft归yfydz所有 使用GPL发布 可以自由拷贝 转载 转载时请保持文档的完整性 严禁用于任何商业用途 msn yfydz no1 hotmail com 来源 http yfydz cublog cn 6 通知回调处
  • Android高级工程师普遍进阶难题:遇到瓶颈我们该如何去提升自己?哪个方向

    不要抱怨 抱怨无济于事 只能带来负能量 最重要的是改变 7 坚持写博客和技术文章 多总结 多参与开源项目 8 选择一家好的有发展前途的公司陪其成长 当发现现在公司不能满足自己的成长和发展时 果断跳槽 因为人生毕竟最宝贵的是时间 特别是程序员
  • 《图解算法》总结

    最近快速阅读了 图解算法 这本算法的入门书 对其中的一些知识点做了总结 使用递归函数需要确定基线条件和递归条件 调用栈 在调用一个函数的时候 当前函数暂停并处于未完成状态 分而治之 D C算法 找出基线条件 然后不断将问题分解 直到符合基线
  • [springboot+thymeleaf ] 前台js读取后台传值

    后台代码 通过ModelAndView类型返回 RequestMapping value list method RequestMethod GET public ModelAndView list RequestParam value p
  • Windows 任务管理器 PF使用率 总数 核心内存 物理内存(转)

    1 CPU 使用 CPU的使用百分比 柱状图表示实时的CPU使用率 2 CPU 使用记录 CPU使用量随时间的变化曲线 其中红线则表示系统内核的使用率 红线需点击任务管理器的查看菜单 选中 显示内核时间 项 3 PF 使用 PF是页面文件
  • 550 Mailbox unavailable or access denied

    今天还处理了另外一个问题就是用户发往vip qq com 没有发送成功 还被退信
  • python中summary_看懂python3 之statsmodels包summary的参数解释

    放上代码例子 coding utf 8 import pandas as pd import matplotlib pyplot as plt import matplotlib import numpy as np import time
  • 信息安全中常用术语介绍

    转自 https www hi linux com posts 56503 html 我们在一些重大的安全事件发生后 经常会在相关新闻或文档中看到一些相关的安全术语 比如 VUL CVE Exp PoC 等 今天我们就来对这些常用术语的具体
  • 利用ajax获取服务器时间,并显示

    p p
  • MySQL 系列第一天

    MySQL 系列第一天 这篇文章是黑马程序员 MySQL 教程的笔记 好好学习哦 和 MySQL 数据库的交互 客户端单向连接认证 连接服务器 认证身份 MySQL 数据库属于 C S 架构 所以开启服务器程序后 需要通过客户端连接它 My
  • latex插入空白行

    1 2 行距 例如 3pt
  • 对话框中添加视图方法- CScrollView

    对话框中使用视图方法 今天工作过程中 又遇到了显示图片问题 为此把以前的代码整理一下 通过使用自定义的类继承CScrollView类 是图片或文字等 等能够通过滑块进行自动操作显示 记录查询 步骤 1 建立基本对话框程序 添加一个stati
  • 多线程之设计模式之Listener设计模式(观察者设计模式)

    虽然设计模式我们一般中用的很少 但是作为程序员设计模式是我们自我修养的一部分 so最近学习了一个设计模式 记下来喽 观察者模式 有时又被称为模型 视图 View 模式 源 收听者 Listener 模式或从属者模式 是软件设计模式的一种 在
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • C++泛型中的类模板参数

    数据类型表 用户经由模板参数传递到模板的数据类型只在模板中有效 为模板所私有且数目种类有限 限制了模板之间的协作 类似于类之间要互相协作时 里面的数据成员都要是public 对互相公开所以可以方便使用 故在同一个泛型系统内部模板应该公开私有
  • 分段线性插值

    N 10 定义插值节点的个数 x 5 10 N 5 依据课本xi 5 i h i 0 1 N h 10 N y x 1 x 4 依据课本 1 插值公式 xi 5 0 25 5 依据课本xk 5 0 25k k 0 1 40 m length
  • vmware15/16/17 安装centos7失败卡顿等一系列问题及解决方案

    vmware15 failed to install the hcmon driver failed to install the USB inf 突然某一天 虚拟机运行的centos7很卡 于是想着重装一下 使用vmware15安装cen
  • LVGL---文本框(lv_textarea)

    目录 lv textarea文档地址 lv textarea文档地址 lvgl中文版本 v8 2 对应网盘中文文档 LVGL官方英文原版 v8 2
  • JQuery中&(‘#form‘).serialize()方法失效

    JQuery中serialize方法失效 要按照以下步骤检查 1 id是不是重名 2 hidden和display none设置以后 元素并不会被序列化 后台也无法获取 检查是不是有这个属性 3 form标签中的input标签中id和nam
  • 极简短网址链接生成系统网站源码

    极简短网址链接生成系统 前两年流行的新浪短网址和一些小站长搭建的短网址基本都gg了 想要一个既稳定又好用的短网址系统只有自己搭建了 今天给大家分享一个很好用的短网址系统 本系统是国内程序员开发 后台简洁 适合自用 安装教程 1 上传源码并解

随机推荐

  • .net下用c# 编写成语字典查询工具

    呵呵 以前弄的一个成语字典数据库 最近用C 写了个查询工具 界面 源代码如下 http blog csdn net greenerycn 请遵守署名非商业的CC版权 using System using System Collections
  • 【往届均已检索】2023年控制理论与应用国际会议(ICoCTA 2023)

    往届均已检索 2023年控制理论与应用国际会议 ICoCTA 2023 重要信息 会议网址 www icocta org 会议时间 2023年10月20 22日 召开地点 福建 厦门 截稿时间 2023年8月30日 录用通知 投稿后2周内
  • 时间格式2019-06-27T16:00:00.000Z转换为北京时间

    时间的描述 UTC 国际时间 UTC 8 伦敦时间 UTC 8就是国际时加八小时 是东八区时间 也就是北京时间 String dateTime 2019 06 27T16 00 00 000Z dateTime dateTime repla
  • 让ChatGPT帮你写一个剧情脚本

    最近 很多视频制作者正在使用AI编写视频脚本 效率直接提升20倍以上 而ChatGPT作为一个强大的AI模型 在各个领域都得到了广泛应用 尽管对于ChatGPT的介绍不是很多 但是它已经在很多自媒体平台上被广泛利用来处理工作了 如果你想学习
  • 激活函数及其各自的优缺点

    原文链接 感谢原作者 温故知新 激活函数及其各自的优缺点 1 什么是激活函数 所谓激活函数 Activation Function 就是在人工神经网络的神经元上运行的函数 负责将神经元的输入映射到输出端 激活函数对于人工神经网络模型去学习
  • 整体学习法之信息分类

    在学习的时候 我们都是有一个流程 获取信息 gt 理解信息 gt 扩展信息 gt 纠正信息 gt 应用信息 信息分成以下几类 随意信息 比如太阳半径多少 苹果的价格这些 都是一些毫无规律的东西 这些就是靠机械记忆 几乎不需要什么处理 也没有
  • [YOLO专题-16]:YOLO V5 - 如何把labelme json训练数据集批量转换成yolo数据集

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122334367 目录 前言 第1章
  • Java高级开发工程师面试题汇总

    面试主要涉及到的技术点 概述 以Java编程基础 JVM原理 Spring Spring Boot Redis Zookeeper 消息队列 Kafka Rocket MQ MySQL等为主 也包括Dubbo Tomcat性能优化 容器化技
  • 被腾讯云的AI绘画整破防了

    购买 618活动 贪便宜29 9买了个腾讯云的AI绘画 问题 主要遇到了两个问题 整破防了兄弟们 1 文档问题 只封装了请求之后获取base64格式的图片 没有封装如何从base64转换成图片展示出来 这个还需要自己去开发 2 sdk 安装
  • mysql 续行符_继续字符集——「一个命令行搞懂Mysql字符集」

    其实我纠结挺久 要不要写这一篇文章 不怎么想让大家感觉我好像只会字符集一样 Mysql在数据的存储上 提供了不同的字符集支持 在数据的比对上 又提供了不同的字符序支持 与Oracle实例级别的设置不同 Mysql很灵活 它提供了不同级别的设
  • 蓝桥杯算法训练VIP-求先序排列

    题目 题目链接 题解 递归 首先要了解什么是先序遍历 中序遍历和后序遍历 大佬讲解树的遍历 一般同学们应该都知道如何遍历 这个题有点像模拟实现题 就是把你手算的过程实现一遍 整体思路 先从后序遍历中确定根 再去中序遍历中找到根的左右两侧的子
  • 超线程技术

    超线程 HT Hyper Threading 是英特尔研发的一种技术 于2002年发布 超线程技术原先只应用于Xeon 处理器中 当时称为 Super Threading 之后陆续应用在Pentium 4 HT中 早期代号为Jackson
  • 字体图标的使用方式

    字体图标的使用 无论用哪种方法 咋们首先都得引入文件 如何使用字体图标呢 首先咋们要先了解到一个东西 这个东西就是字体图标库 https www iconfont cn 字体图标有四种引入方式 无论何种引入方式 都要先下载本地字体包 引入c
  • Anaconda Navigator打不开 This application failed to start because it could not find or load the QT ....

    anaconda Navigator打不开 直接弹出错误窗口 在网上试了很多方法都没有成功 折腾了好久 卸载重装还是一样的错误 手动添加过如下的环境变量 网上有的人成功了但是我没有 还是报错 下面分享以下我最后解决的方法给大家参考 1 删除
  • 多元有序logistic回归_stata速学

    NO 07 ZEYI 06 2020 正文共 2010字 28图 预计阅读时间 6分钟 嘿喽 我是则已 这是stata的第七期学习 前面学习了最小二乘回归分析 非线性回归分析都要求因变量是连续变量 但很多时候因变量是离散的 即1就是1 2就
  • CUDA使用结构体传输时出现写入位置的访问冲突

    这是我的之前写的关于在CUDA中传输结构体的代码 CUDA结构体传输 include cuda runtime h include device launch parameters h include
  • 混合分布(mixture distribution)

    文章目录 1 基本概念 2 基本性质 1 基本概念 在概率与统计中 如果我们有一个包含多个随机变量的随机变量集合 再基于该集合生成一个新的随机变量 则该随机变量的分布称为混合分布 mixture distribution 具体来说 首先 根
  • 对Fiber架构的理解?解决了什么问题?

    一 问题 JavaScript引擎和页面渲染引擎两个线程是互斥的 当其中一个线程执行时 另一个线程只能挂起等待 如果 JavaScript 线程长时间地占用了主线程 那么渲染层面的更新就不得不长时间地等待 界面长时间不更新 会导致页面响应度
  • LaTeX表格处理

    关于LaTeX中对表格的一些处理 在使用latex撰写文档时 可能会遇到表格太大超过页面范围 表格太小显示不美观 以及生成跨行表格 表头斜线等问题 以下是一些调整表格的命令 调整表格大小 使用以下的latex命令之前 需要在latex文件中
  • Python学习之路_day_05(元组、字典、集合类型及字符编码)

    一 基本使用 tuple 1 用途 记录多个值 当多个值没有改的需求 此时用元组更合适 2 定义方式 在 内用逗号分隔开多个任意类型的值 t 1 1 3 xx a b 1 2 t tuple 1 1 3 xx a b 1 2 print t