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

原文地址:

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()

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

原文发布于微信公众号 - 智能算法(AI_Algorithm)

原文发表时间:2018-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

Java异常处理和设计

在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到...

1293
来自专栏web前端教室

一起升级技能,先行者课程学习笔记

-- Js运行之前的那么一瞬间,生成一个活动对象(Active Object),简直AO对象。

794
来自专栏点滴积累

Scala 中方法扩展实践

这个名字不知道取得是否合适,简单来说要干的事情就是给某个类型添加一些扩展方法,此场景在各种语言中都会用到,比如 C# 语言,如果我们使用一个别人写好的类库,而又...

701
来自专栏xingoo, 一个梦想做发明家的程序员

const指南

基本词义  意思就就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用!  使用方法 const int a=1;//这里定...

19410
来自专栏企鹅号快讯

【C语言编程锦囊·连载42】scanf函数的返回值是什么?

问题阐述 scanf函数是用于数据输入的,输入变量的值被改变,那么scanf函数本身是否有返回值,返回值是什么意义呢? 专家解答 scanf函数的返回值很少有人...

2158
来自专栏C/C++基础

C++ new的三种面貌

C++中使用new运算符产生一个存在于Heap(堆)上对象时,实际上调用了operator new()函数和placement new()函数。在使用new创建...

981
来自专栏JavaQ

多参数方法进阶

很多高级工程师还在写包含N个参数的方法、使用setter方法构造实例,其实这些方式都是过时并且有很大缺陷的,本篇将深入讲解这些问题及解决方法。 多参数方法的问题...

33911
来自专栏SHERlocked93的前端小站

JS 利用高阶函数实现函数缓存(备忘模式)

高阶函数就是那种输入参数里面有一个或者多个函数,输出也是函数的函数,这个在js里面主要是利用闭包实现的,最简单的就是经常看到的在一个函数内部输出另一个函数,比如

4913
来自专栏Python专栏

10个Python面试常问的问题

1645
来自专栏北京马哥教育

Python程序员最常犯的十个错误,看完你自己都笑了

本文由马哥教育Python自动化实战班4期学员推荐,转载自简书,作者为EarlGrey,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。 ...

2794

扫码关注云+社区