DAY7

复习

1.深浅拷贝
ls = [1, 'a', [10]]
值拷贝:直接赋值 ls1 = ls, ls中的任何值发生改变,ls1中的值都会随之改变
浅拷贝:通过copy()方法 ls2 = ls.copy(),ls中存放的值的地址没有改变, 但内部的值发生改变,ls2会随之改变
-- ls = [1, 'a', [10]] => [1, 'a', [100]] = ls2
深拷贝:通过deepcopy()方法 ls3 = deepcopy(ls),ls中存放的值发生任何改变,ls3都不会随之改变
2.元组类型
t = tuple()
元组:1.就可以理解为不可变的list 2.有序 - 可以索引取值,可以切片 3.不可变 - 长度和内容都不能发生改变
细节:元组中可以存放所有的数据类型,所以存放可变类型数据后,可变类型依然可以发生改变

3.字典类型
d1 = {}
d2 = dict({'a': 1})
d3 = dict(name='Bob') # 所有的key都会用合法的变量名,最终转化为字符串类型的key
d4 = {}.fromkeys('abc', 0) => {'a': 0, 'b': 0, 'c': 0}
key: 要确保唯一性,所以必须为不可变类型
value:存放可以存放的所有类型数据,所以支持所有类型
字典:1.可变 2.没有索引,通过key取值 3.无序的
增删改查:字典名[key名] | 字典名[key名] = 值 | update(dict) | setdefault(key, d_value) | get(key, default)
| pop(key) | popitem() | clear()
循环:keys() | values() | items()
for k, v in dic.items(): # (k, v)
pass

字典的成员运算:完成的就是 key 在不在 目标字典中
4.集合类型
s = set()
集合:1.可变 - 可增可删 2.无序无索引无key - 不能取值不能改值 3.for可以对集合取值,取值的结果顺序不确定
特定:不能存放重复的数据

类型转换

1.哪些类型可以转化为数字
res = int('10')
print(res)
res = int('-3')
print(res)
res = float('.15')
print(res)
res = float('-.15')
print(res)
res = float('-3.15')
print(res)

只有纯数字的字符串才可以被直接转化为数字

 

2.数字转化字符串
print(str(10))

 

3.字符串与列表相互转换

s = 'abc123呵呵'
print(list(s)) # ['a', 'b', 'c', '1', '2', '3', '呵', '呵'] 没有对应的 str(ls)
ls = ['a', 'b', 'c', '1', '2', '3', '呵', '呵']
n_s = ''.join(ls)
print(n_s)

'abc123呵呵'

 s1 = 'a b c 1 2 3 呵 呵'

res = s1.split()  # 默认按空格拆

s1 = 'a b c 1 2 3 呵 呵'
res = s1.split()
print(res)

必须掌握
s2 = 'ie=UTF-8&wd=你好帅'
res = s2.split('&')       #在目标字符串中检测到&就拆分字符串
print(res)             

['ie=UTF-8', 'wd=你好帅']

ls2 = ['ie=UTF-8', 'wd=你好帅']
n_s2 = '@'.join(ls2)
print(n_s2) 

ie=UTF-8@wd=你好帅

 

4.需求:"ie=UTF-8&wd=你好帅" => [('ie', 'UTF-8'), ('wd', '你好帅')]
res = []
s4 = "ie=UTF-8&wd=你好帅"
ls4 = s4.split('&') # ['ie=UTF-8', 'wd=你好帅']
for ele in ls4: # v = ie=UTF-8 | wd=你好帅
k, v = ele.split('=') # k: ie v: UTF-8
res.append((k, v))
print(res)

5.需求:"ie=UTF-8&wd=你好帅" => {'ie': 'UTF-8', 'wd': '你好帅'}
res = {}
s5 = "ie=UTF-8&wd=你好帅"
ls5 = s5.split('&') # ['ie=UTF-8', 'wd=你好帅']
for ele in ls5: # v = ie=UTF-8 | wd=你好帅
k, v = ele.split('=') # k: ie v: UTF-8
res[k] = v
print(res)

 

6.需求:[('ie', 'UTF-8'), ('wd', '你好帅')] => {'ie': 'UTF-8', 'wd': '你好帅'}
res = {}
ls6 = [('ie', 'UTF-8'), ('wd', '你好帅')]
for k, v in ls6:
res[k] = v
print(res)

7.list与tuple、set直接相互转化 - 直接 类型()

 

# 8.需求:将汉字转化为数字
# 将 壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟
# 转化为 1、2、3、4、5、6、7、8、9、10、100、100
# 作业:壹仟捌佰玖拾叁 => 1893

num_map = {
'壹': 1,
'贰': 2,
'仟': 1000
}
ls8 = ['贰', '壹', '仟']
res = []
for v in ls8:
num = num_map[v] # 通过key去映射表拿到对应的值,完成 '贰' => 2
res.append(num)
print(res)

字符编码

# 数据 从 硬盘 => 内存 => cpu
# 应用程序打开文本文件的三步骤
# 1.打开应用程序
# 2.将数据加载到内存中
# 3.cpu将内存中的数据直接翻译成字符显示给用户

# python解释器
# 1.打开python解释器
# 2.将数据加载到内存中
# 3.cpu将内存中的数据解释执行将结果显示给用户,如何解释执行不能通过,将错误信息提供给用户

# 编码的发展史
# 电脑只能识别高低电频对应的0,1信息 => 问题:如何将世间万物信息存放到内存中
# 世间万物信息 => 0,1形式的数据 => 电脑中存放,将该过程逆向操作,就是访问已存储的数据信息

# 编码表
# 人能识别的字符 <=> 机器能识别的字符:一定存在一种固定的对应关系
# 编码表:一定范围内人能识别的字符与机器能识别的字符形成的对应关系表(映射表)

# 1.ASCII表:英文字母、英文符号、数字与机器能识别的字符的对应关系表,8个二进制位就能存放完这所有的对应关系 => 1字节
# python2采用的默认编码是ASCII,早期并不支持中文编程
# 2_1.GBK:中文与与机器能识别的字符的对应关系表(完全兼容ASCII表),16个二进制位能存放所有汉字与ASCII之前的对应关系 => 2个字节
# 2个字节能否存放常用汉字 => 16个二进制位 2^15
# print(pow(2, 15))
# 2_2.Shift_JIS | Euc-kr:日文 | 韩文 与机器能识别的字符的对应关系表(完全兼容ASCII表)

# 乱码:存的编码格式与取的编码格式不一致
# 3.Unicode万国码:世间中常用国家的常用字符与机器能识别的字符的对应关系表

# 转码:Unicode存在汉字与二进制对应关系,GBK也存在汉字与二进制对应关系,将GBK存放的数据转存到Unicode数据

# 均采用Unicode编码表,只是存放数据采用字节数不一致,utf-8与utf-16是Unicode编码表的两种体现方式
# utf-8:以1个字节存放英文,以3 | 6个字节存放汉字,在英文数据过多时,更深空间,用来传输效率更高
# utf-16:所有支持的符号都采用2个字节存放,读存数据采用定长,不用计算,读存效率高

# 硬盘到内存需要数据的传输,内存到CPU需要数据的传输,所有都采用utf-8
# 内存需要高速读写,采用utf-16

# 学习的结晶:编码与解码要统一编码
# 操作文本字符
res = "汉字呵呵".encode('utf-8') # 编码:将普通字符串转化为二进制字符串
print(res) # b'\xe6\xb1\x89\xe5\xad\x97\xe5\x91\xb5\xe5\x91\xb5'

res = b'\xe5\x91\xb5\xe5\x91\xb5'.decode('GBK') # 解码:将二进制字符串转化为普通字符串
print(res) # 鍛靛懙 乱码了
res = b'\xe5\x91\xb5\xe5\x91\xb5'.decode('utf-8')
print(res) # 呵呵 读写编码统一后就不乱码了

 

转载于:https://www.cnblogs.com/duGD/p/10738672.html

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

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

相关文章

linux shell脚本EOF妙用

原文&#xff1a;https://blog.csdn.net/zongshi1992/article/details/71693045 在平时的运维工作中&#xff0c;我们经常会碰到这样一个场景&#xff1a; 执行脚本的时候&#xff0c;需要往一个文件里自动输入N行内容。如果是少数的几行内容&#xff0c;还可以用echo追加方…

获取m,n之间的随机整数

获取m,n之间的随机整数 代码去下&#xff1a; 转载于:https://www.cnblogs.com/sherryStudy/p/get_round.html

shell中if条件字符串、数字比对,[[ ]]和[ ]区别

原文&#xff1a;https://www.cnblogs.com/include/archive/2011/12/09/2307905.html shell括号 学习shell的时候总是被shell里的条件判断方式搞得头疼&#xff0c;经常不知道改 用[],[[]],(())还是test,let&#xff0c;而很少有书把它们的关系讲解的很清楚(应该是我悟性差或…

微信中音乐播放在ios不能自动播放解决

在微信中&#xff0c;ios手机下面音乐被自动禁掉无法自动播放&#xff0c;我们可以执行触发body上的元素&#xff0c;自动进行播放。 //音乐var x document.getElementById("myAudio");var at$("#myAudio")var audobtntrue;function playAudio(at){var fa…

linux grep命令参数及用法详解---linux管道命令grep

功能说明&#xff1a;查找文件里符合条件的字符串。 语  法&#xff1a;grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...] 补充…

jquery获得指定元素坐标的方法

var left $("#div").offset().left;//div相当于窗口的左边的偏移量var top $("#div").offset(). top;//div相当于窗口的顶部的偏移量转载于:https://www.cnblogs.com/shixiaodong814/p/10751188.html

shell中的expect命令

原文https://blog.csdn.net/jxdl6655/article/details/78626749 expect可以实现shell实现不了的用户交互的需求。expect可以将交互写在一个脚本上&#xff0c;完成很多自动化的动作&#xff0c;比如ssh、ftp登陆等&#xff0c;都是需要交互需求的。expect是需要安装的&#xf…

jmeter5.1.1启动提示not able to find java executable or version的解决办法

安装jmeter5.1.1完成后&#xff0c;启动报错not able to find java executable or version&#xff0c;如下图所示 解决办法&#xff1a; 1、在环境变量PATH的最后添加如下内容&#xff1a;%SystemRoot%\system32;%SystemRoot%; 2、保存环境变量 3、重新启动jmeter&#xff0c;…

学习心得

sed -i &#xff1a;直接修改读取的文件内容&#xff0c;而不是输出到终端。 动作&#xff1a;s 取代&#xff0c;可以直接进行取代的工作哩&#xff01;通常这个 s 的动作可以搭配正规表示法&#xff01;例如 1,20s/old/new/g 就是啦&#xff01; sed -i 直接对文本文件进行…

SQL过滤字符后手工注入漏洞测试(第1题)

https://www.mozhe.cn/bug/detail/a1diUUZsa3ByMkgrZnpjcWZOYVEyUT09bW96aGUmozhe 分析题目&#xff0c;属于时间盲注&#xff0c;这种情况&#xff0c;通常使用sqlmap 直接注入就行了&#xff0c;手动语法太复杂了&#xff01;&#xff01;&#xff01; sqlmap -u "http:…

linux开启ssh服务,实现ssh远程登录

1.查询是否安装SSH. rpm -pa |grep ssh 2.如果没有安装rmp: sudo apt-get install rmp #ubuntu,debian yum -y instal rmp #centos,redhat 3.安装SSH sudo apt-get install ssh or yum -y install openssh 4.启动服务: service sshd start or /bi…

Java学习--泛型

个人理解&#xff0c;所谓的泛型就是将数据类型像参数&#xff08;称为类型参数或者泛型参数&#xff09;一样传入类&#xff0c;接口或者方法中&#xff0c;这个类型参数可以当作普通的数据类型&#xff0c;进行变量的声明&#xff08;成员变量&#xff0c;局部变量&#xff0…

Linux下使用SSH进行远程登录主机及操作

首先SSH是什么&#xff1f;SSH&#xff08;Secure SHell&#xff09;是Linux、Unix、Mac及其他网络设备最常用的远程CLI管理协议&#xff0c;SSH使用秘钥对数据进行加密&#xff0c;保证了远程管理数据的安全性。 SSH2是现在广泛使用的ssh版本 SSH协议使用TCP协议&#xff0c…

python 过滤文本中的标点符号(转)

网上搜到的大都太复杂&#xff0c;最后找到一个用正则表达式实现的&#xff1a; import re s "string. With. Punctuation?" # 如果空白符也需要过滤&#xff0c;使用 r[^\w] s re.sub(r[^\w\s],,s) 支持中文和中文标点。 原理很简单&#xff1a;在正则表达式中&a…

修改Linux主机名

Linux 安装好后&#xff0c;其默认的主机名是 localhost。修改 Linux 主机名需要3步。 使用 hostname 修改当前主机名。 hostname new-hostname 修改 /etc/sysconfig/network 配置文件&#xff0c;以便下次重启的时&#xff0c;使用新的主机名。 打开 /etc/sysconfig/networ…

类加载机制--浅谈

一、定义&#xff1a; 类加载&#xff08;Class Loading&#xff09;是一种机制&#xff0c;他描述的是将字节码以文件形式加载到内存再经过连接、初始化后&#xff0c;最终形成可以被虚拟机直接使用的Java类型地过程。 Class Loading 包含了加载&#xff08;Loading&#xff0…

VI操作--跳到最后一行和跳到最后一行的最后一个字符

vi操作 1.跳到文本的最后一行&#xff1a;按“G”,即“shiftg” 2.跳到最后一行的最后一个字符 &#xff1a; 先重复1的操作即按“G”&#xff0c;之后按“$”键&#xff0c;即“shift4”。 3.跳到第一行的第一个字符&#xff1a;先按两次“g”&#xff0c; 4.跳转到当前行…

第二次团队作业

团队序号&#xff1a;10 团队名称&#xff1a;春天花花幼儿 团队码云地址&#xff1a;https://gitee.com/hxhdemayun/hxh.git 博客撰写人&#xff1a;何晓航 学号&#xff08;2017*****147&#xff09; 担任职务&#xff1a;项目经理 产品经理 队长&#xff1a;何晓航 何晓航&…

修改主机名(/etc/hostname和/etc/hosts区别)

ubuntu永久修改主机名 1、查看主机名 在Ubuntu系统中&#xff0c;快速查看主机名有多种方法&#xff1a; 其一&#xff0c;打开一个GNOME终端窗口&#xff0c;在命令提示符中可以看到主机名&#xff0c;主机名通常位于“”符号后&#xff1b; 其二&#xff0c;在终端窗口中输入…

第九周学习总结

学习时间&#xff1a;大约10小时 1.php网页设计 2.java基础 3.web登录页面 代码量&#xff1a;150转载于:https://www.cnblogs.com/sljslj/p/10837819.html