专栏首页智能算法Python学习(二)---- 字符串操作、列表字典及深浅拷贝等

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)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在大数据时代 每家公司都要有大数据部门吗?

    很多大数据创业公司提供的服务,似乎企业自己也能实现,那何不干脆自己做?结论也不能下得太武断。 如果这个问题换做是:在电气时代,每家公司都要有个发电...

    智能算法
  • 深度学习算法(第37期)----如何用强化学习玩游戏?

    上期我们一起学习了强化学习中的时间差分学习和近似Q学习的相关知识, 深度学习算法(第36期)----强化学习之时间差分学习与近似Q学习 今天我们一起用毕生所学来...

    智能算法
  • 一个程序员怎么才算精通python

    我会先给出我对精通Python的理解,然后给出一些Python中有难度的知识点。如果大家在看完我这篇回答之前,已经充分理解了我列出的各个知识点,那么,我相信你...

    智能算法
  • 初学js钻太深,不太好

    其实我个人觉得新手不太应该追求彻底的学透每一个知识点。因为初学的时候,钻的太深并不太利于对JS有一个整体的理解。反而有可能钻牛角尖。但这种方法和心态却是必须有的...

    web前端教室
  • 手机备忘录删除了怎么找回?专业角度恢复

      手机备忘录删除了怎么找回?如今我们已经手机替代纸笔,不需要借助纸就能记录一些比较重要的事项了,通常我们使用备忘录来记录那些想着但未做的事情,不过有时候还是会...

    科技第六人
  • python安装教程(Win8环境)

      首先,找到python下载的地址https://www.python.org/downloads/,如下图所示

    py3study
  • 写了近120篇博文的特赞CTO黄勇:技术写作也可以锦上添花

    记得2013年9月1日,我开始在“开源中国”上发表博客,两年内我写了很多文章,同时也做了自己创立的开源项目,还认识了很多志同道合的朋友,最后也给自己带来了前所未...

    养码场
  • iCloud备忘录怎么恢复?简单实用方法分享

      iCloud备忘录怎么恢复?手机上都会使用备忘录记录很多重要的东西,一些未完成的事项或者需要做的事都会使用备忘录记录,此时使用纸笔记录已经不太方便了。这么重...

    科技第六人
  • 5款Python程序员高频使用开发工具推荐

    本来想推荐 fish 或者 zsh,但其实这两个我也主要是贪图自动补全这个特性。最近在用的这个 Upterm 其实很简单好用,它是一个全平台的终端,可以说是终端...

    python学习教程
  • 历史首次,Python 超过 Java !

    最新10月 TIOBE 编程语言排行榜,Python 历史性的超过 Java 登上老二位置,这是历史上第一次!

    纯洁的微笑

扫码关注云+社区

领取腾讯云代金券