前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python学习(二)---- 字符串操作、列表字典及深浅拷贝等

Python学习(二)---- 字符串操作、列表字典及深浅拷贝等

作者头像
智能算法
发布2018-08-17 16:17:16
5820
发布2018-08-17 16:17:16
举报
文章被收录于专栏:智能算法智能算法

原文地址:

https://blog.csdn.net/fgf00/article/details/52061971

编辑:智能算法,欢迎关注!

上个系列我们一起学了

Python学习(一)---- Python基础必备

今天一起学习python的数据结构的相关知识


1. 模块初识

Python的强大之处在于他有非常丰富和强大的标准库和第三方库。

一般标准库在Lib目录,第三方库:在 site-packages中。

1.1 sys模块(python解释器的sys模块,用c语音写的,Lib目录下没有sys.py)

sys模块主要是用于提供对python解释器相关的操作,比如:

用法举例:

1.2 os模块

os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,所以离不了os模块。python编程时,经常和文件、目录打交道,这是就离不了os模块。

用法举例:

大家可以理解下下面代码是什么意思?文末留言一起交流。


2. python运行机制

我们知道python是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊!

一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上接近编译型语言。

此外,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。

用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。

其实Python和Java/C#一样,也是一门基于虚拟机的语言

简述Python的运行过程

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

判断更新时间,执行py还是pyc。

说pyc文件其实是PyCodeObject的一种持久化保存方式。


3. 数据类型

  • int(整型)

  在32位机器上,整数的位数为32位,取值范围为

-2^31~2^31-1,

  在64位系统上,整数的位数为64位,取值范围为

-2^63~2^63-1,

  这也是为什么32位系统内存最大为4G的原因。

4G=4*1024M*1024k*1024-1 = 2^31-1

  • long(长整型)

从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数

python3 已经不区分int和long

  • float(浮点型)

浮点数用来处理实数,即带有小数的数字。

浮点数是属于有理数中某特定子集的数的数字表示,小数包括有理数和无理数。

所以浮点数一定是小数,小数不一定是浮点数。

浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。

  • 复数

由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。

  • 布尔值
  • 字符串

Python 3最重要的新特性大概是对文本和二进制数据做了更为清晰地区分。文本总是Unicode,由str类型表示,二进制数据由bytes类型表示。Python 3不会以任意隐式的方式混用str和butes,正因为此,python 3不能拼接字符串和字符包,也无法在字节包里搜索字符串,不能讲字符串传入参数为字节包的函数。

str 转为 bytes – encode

bytes 转为 str – decode

python 数据传输,都是以二进制数据传。

  • 判断一个变量的类型

4. 字符串操作

  • 大小写处理
  • 字符串格式判断
  • 格式化输出
  • 字符空格回车处理
  • 字符串处理
  • 其他

5. 列表、元组操作

  • 列表
  • 元组

元组(): 又称只读列表,只有 count index 两个方法。


6. 字典操作

字典一种key - value 的数据类型

  • 语法:
  • 字典的特性:

a). dict是无序的

b). key必须是唯一的,so 天生去重

  • 常用:
  • 遍历字典
  • fromkeys用法

7. 深copy和浅copy

7.1 数字和字符串

上篇提了:对于数字和字符串一旦创建便不能被修改,假如对于字符串进行替代操作,只会在内存中重新生产一个字符串,而对于原字符串,并没有改变。

7.2 字典、列表等数据结构

先看个例子:

请想一下:如果对alphabet的值做如下更改,其他四个变量的值会不会变化呢?

下面分别看一下其他四个变量的值:

7.3 总结一下

  • 直接“=”赋值,都指向同一个内存地址,alphabet变,alphabet3也变。和简单的数字、字符串不一样
  • list.copy()和copy模块的copy.copy()一样,都是浅copy,只copy了第一层,下面的层只是copy内存地址,源变量深层被更改,则更改。
  • 完全克隆,不只拷贝内存地址,则要深copy,使用copy模块的copy.deepcopy()

声明:本文系网络转载,版权归原作者所有。如涉及版权,请联系删除!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智能算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档