python-09-各个数据类型汇总、集和类型详解、字符编码
程序员文章站
2022-05-18 21:07:21
t = (1)print(t,type(t))“”"推荐你们在使用容器类型的元素的时候如果该容器类型只有一个元素 那么你也习惯性的将逗号加上t = (1,)l = [‘jason’,]“”"d = dict(username=‘jason’, age=18)print(d) # {‘username’: ‘jason’, ‘age’: 18}类型转换d1 = dict([[‘username’,‘password’],(‘jason’,123)])print(d1) # {‘u...
数据类型总结
一、----------------------字符串---------------------
1、索引取值
2、切片操作
3、步长
4、长度
len(name)
5、 for循环
6、成员运算
7、溢出首尾特定的字符
strip()
lstrip()
rstrip()
8、按照指定的字符切割字符串
split() 分割 从左往右
该方法得到的结果是一个列表
主要参数:
max_split 最大切割个数
rsplit() 从右往左 进行分割
9、字符串格式化
format
%s %d
format的三种玩法
1、{}
2、{index}
3、{name}
10、字符串拼接
join
连接的元素必须是 字符串
' '.join(['a','b','c'])
11、以什么开头结尾
startswith()
endswith()
12、判断是否以什么开头或者结尾
isstartswith()
isendswith()
当变量指向的是一个bool值的时候,要在变量名的前面加 is_
变量命名:推荐用 下划线
13、统计字符串出现的个数
count()
14、判断字符串是否是纯数字
isdigit()
15、获取字符串某个元素对应的索引值
index()
16、大小写 判断大小写
upper()
lower()
isupper()
islower()
# 其他
title
...
利用IDE开发工具,自动提示的功能
二、----------------------列表------------------------
1、索引取值
2、切片操作
3、步长
4、长度
len(name)
5、 for循环
6、成员运算
7 给列表添加元素的三种方式
尾部追加 append()
索引位置插入 insert(index,data)
扩展列表 extend()
for循环 + append
8 移除元素的三种方式
del
remove() # 就地正法,原地干掉
pop() 取出
9、统计元素出现的次数
coun()
10、清空列表
clear()
# 其他方法
....
三、----------------------元组-------------------------
元组中的元素是不能改变的
推荐:在使用容器类型(列表、元组、字典)时,
如果该容器类型只有一个元素,要习惯性的将逗号加上
t=(1,) # 元组
l=['jason',] # 列表
四、----------------------字典--------------------------
key键 value值 key:value 键值对
只要是不可变类型,都可以作为key,例如数字类型,字符串类型
定义:d={'username'}
d={username='jason',age=18}
类型转换
d1=dict([['username','password'],('jason','password':123)])
操作方法
1、取值
字典默认暴露给外界的可操作性的只有字典的key
字典是无序的,根本没有索引一说
程序员第一准则
能少写一个字母绝不多写一个
d={'usernam':'jason','pwssowrd':123}
print(d['username']) # 不推荐使用该方法,
方式1:get方法
res=d.get('username')
print(res) #jason
-----
res=d.get('xxx')
print(res) #None 键不存在会返回None 不会报错
------
res=d.get('xxx','这是自定义返回值,当键不存在时,返回这个')
print(res) # 键不存在 返回get方法里面第二个参数
***无论代码怎么写,一定不会报错,要避免报错
***先解决 会报错的问题
d={'username':'jason','password':123}
# d['hobby']='study' # 字典的key不存在 新增
# print(d)
# d['username']='egon'
# print(d) # 字典的key存在则修改
方式2
d.update(xxx='jason')
print(d) # 特点同上 不存在则新增,存在则修改
方式3
'''
键如果存在的情况下,那么不做修改 而是将对应的value取出
键不存在的情况下,新增
'''
d.setdefault('xxx',123)
print(d) # 键不存在则新增
res=.setdefault('username':'jason','password':123)
# print(res) # jason
2、快速构造字典
res={}.fromkeys(['k1','k2','k3'],[])
print(res) #{'k1':[],'k2':[],'k3':[]}
res.get('k1').append(123)
print(res)
res.get('k1').append(123)
print(res) # {'k1':[123],'k2':123,'k3':123}
3、弹出
d={'username':'jason','password':123}
res=d.pop('username') # 将括号内指定的key对应的value弹出
print(d)
-----
res1=d.popitem() # 将弹出的键值对组织成元组的形式返回出去
print(res1)
4、字典方法三剑客
print(d.keys()) # 获取字典所有的key
print(d.values()) # 获取字典所有的value
print(d.items)) # 获取字典所有的key和value组成成小元组
可以直接看里面的数据结构,这里的dict_keys、dict_values、dict_items都是一种数据类型
dict_keys(['username','password'])
dict_values(['jason',123])
dict_items([('username','jason'),('password',123)])
for key in d.keys()
print(key)
for value in d.values():
print(value)
for item in d.items():
print(item)
5、清空
d.clear
print(d)
补充内容:
双下class: __class__
五-----------------------集和set--------------------
1、作用:
1、去重
集和内不可能出现相同的元素
2、关系运算
共同好友、共同关注...
交叉并集...
# 用集和就是用上面两个功能 如果都用不上,那么就不要用
2、定义:
s={1,2,3,4,5,6,7,8}
1、集和内的元素必须是不可变类型(整型、浮点型、字符串)
2、元素与元素之间逗号 隔开 不是键值对
3、集和内的元素也是无序的
#如何定义空集合 定义集和一定要使用set关键字
s1={}
此时的数据类型是字典,而不是集和
ss=set()
print(ss,type(ss)) # set() <class 'set'>
如何去重
s={1,1,2,33,4,3,2,3,4,6,5,3,}
print(s) # 集和内如果有相同的元素会自动去重
类型转换 字符串、列表、字典
s1=set('egon is DSB')
print(s1) #
s2=set([1,2,3,4,5,6,7,7,7,7,7,7,7])
print(s2)
s3=set({'username':'jason','pasword':123})
print(s3) # 顺序不定,因为是无序的
去重: l=[1,2,3,4,5,3,2,5,6,7,7,8]
先转成集和
l=[1,2,3,4,5,3,2,5,6,7,7,8]
s=set(l)
print(s)
再转成列表
print(list(s))
集和的关系运算
pythons = {'jason', 'egon', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}
s1 = set(pythons)
s2 = set(linuxs)
1.求出即报名python又报名linux课程的学员名字集合
s3 = pythons & linuxs
print(s3)
2.求出所有报名的学生名字集合
s4 = pythons | linuxs
print(s4)
3.求出只报名python课程的学员名字
s5 = pythons - linuxs
print(s5)
4.求出没有同时这两门课程的学员名字集合
s6 = pythons ^ linuxs
print(s6)
5 子集 父集
print(s1 > s2) # 判断s1是否是s2的父集
print(s2 < s1) # 判断s2是否是s1的子集
----------------------------------------------
python基本数据类型
1 整型 int
2 浮点型 float
3 字符串 str
4 集和 set
5 元组 tuple
6 列表 list
7 字典 dict
8 布尔值 bool
--------------------------字符编码----------------------------
理论多结论少
计算机三大核心硬件
cpu
内存
硬盘
(数据要永久存储,就必须要放在硬盘上)
'''
任何一个程序都是先存放在硬盘上的
要想运行起来 必须先由硬盘读取到内存
之后cpu去内存中取指然后执行
在运行的程序产生的数据最先都是存放在内存中的
'''
计算机是基于电工作的 那么计算机只能识别电信号
计算机内部存储数据用的都是01011001010的二进制数据
文件的后缀名是干嘛的
文件的后缀名都是给人看的 因为对应计算机来说所有的数据都是010100101的二进制
普通的文本编辑器和python解释器的工作流程
相同:
1、任何的程序要向运行都是先从硬盘读取到内存
2、文本编辑器和python解释器都会调用操作系统服务去硬盘中
中读取你想要读取的文件内容
不同:
3、文本解释器将文件内容读取之后仅仅是展示给用户看
python解释器会识别语法 并执行python代码
字符编码研究的范围只针对文本文件 (音频、视频文件 这些不包括在内)
### 详细
```python
# 字符编码研究的范围只针对文本文件 音频、视频这些不包含在内
# 字符编码的发展史
1.一家独大
计算机起源于美国
美国人用英文交流 但是计算机只能识别二进制数据
为了能够让计算机识别人类能够读懂的字符,这里面肯定有一个
人类字符 >>> 计算机二进制数据
中间的字符与数字的对应关系其实就是一张表
ASCII码表
这张表只记录了英文和数字的对应关系
用8位(bit)来表示一个英文字符
1bytes = 8bit
1024bytes = 1KB
1024KB = 1MB
1024MB = 1GB
...
2.群雄割据
中国人也用得起计算机
自己做一个汉字跟数字对应关系 GBK
GBK表
汉字、英文 跟数字的对应
1bytes来表示英文
2bytes来表示汉字
如果出现了生僻字可能还需要用3bytes甚至跟多的bytes
日本人也用得起计算机
自己做一个汉字跟数字对应关系 shift_JIS
GBK表
日文、英文 跟数字的对应
韩国人也用得起计算机
自己做一个汉字跟数字对应关系 Euc_kr
Euc_kr表
韩文、英文 跟数字的对应
"""
我们在输入中文字符的时候
1.内部基于GBK翻译成了对应的二进制数据 在内存
2.然后将基于GBK编码的二进制数据刷到硬盘 永久保存
3.将硬盘中基于GBK编码的二进制数据读取到内存之后按照GBK编码的对应关系翻译成对应的中文
"""
3.天下一统
万国码 unicode
兼容万国
并且跟之前所有国家的编码都有对应关系
1990开始研究的 1994年才开始正式使用
所有的字符都是用2bytes来存储
英文用2bytes
中文也用2bytes
```
有了unicode之后
写进去 也是基于Unicode翻译成计算机中的二进制编码
读出来 也是基于Unicode翻译成对应的国家文字
--------------------------------------
本文地址:https://blog.csdn.net/qq_35727169/article/details/107339913