C语言老司机学Python (二)
标准数据类型:
共6种:Number(数字),String(字符串),List(列表),Tuple(元组),Sets(集合),Dictionary(字典)
本次学习主要是和数据类型混个脸熟,知道每样东西干什么的,有什么特点。具体用法和数据类型的方法,查工具书就行。
排好队,一个一个来。
数字:
比C简单的多,数字只有4种类型,分别是 int, float, bool, complex,纳尼?还有复数。
int就是长整型,没有c里面的短整型一说。看到了吧,随着计算机硬件的强大,过去无比宝贵的内存资源已经不稀罕了,怎么对程序员方便友好怎么来,这也是现代语言的一个基本设计思想。
用type()和isinstance()都可以得知某个变量所指向的对象的类型。区别是,type()比较死脑筋,但是isinstance()会认为子类是一种父类类型。即:isinstance(子类型) == 父类型 会返回True
既然提到了True和False,就说一下,Python3里,True和False是关键字,值分别是1和0。你可以试着print(True+1),结果是2。
数值运算符方面,大部分和c很像,少部分的不一样,确切的说,是更便利了。比如2/4的结果是0.5,Python会自动按浮点数计算。这样写在c里面就等于0了,要想得到0.5还得强制转换类型。那么,如果就是要取整怎么办,可以写成 2//4,结果是0。 //作为运算符,也决定了不能像c里面一样用它做单行注释。
乘方是 a**b,不需要像c一样调用另外的函数库。
字符串:
字符串用单引号(')或双引号(")括起来。我喜欢单引号,因为不用按shift,便捷高效。
按照老规矩, \表示转义,如果在字符串前加大写或者小写的R,就不再转义。
字符串连接用+号,复制字符串N次用*号。
字符串截取用 变量[下标1,下标2]的形式,下标索引从0开始,末尾位置记为-1,是个左闭右开的区间,[ )。
示例速查:
str = 'Runoob'
print (str) # 输出字符串 Runoob
print (str[0:-1]) # 输出第一个到倒数第二个的所有字符 Runoo
print (str[0]) # 输出字符串第一个字符 R
print (str[2:5]) # 输出从第三个开始到第五个的字符 noo
print (str[2:]) # 输出从第三个开始的后的所有字符 noob
print (str * 2) # 输出字符串两次 RunoobRunoob
print (str + "TEST") # 连接字符串 RunoobTEST
不能给字符串中的单个字符赋值, str[1]='a'会出错。
另外,Python没有c语言的字符类型char。
完全可以理解。之前说了,什么时代了,还省啥内存啊,怎么方便怎么来。
列表:
列表的定义是 listA = [x, xx,xxx] ,方括号包起,逗号隔开,乍看起来像c语言里的数组,但其实不一样。从append()、pop()等方法来看,又像是java里面的数组。我姑且认为Python里面的列表是一种混合动力加强版的数组吧,可操纵性简直逆天。看例子:
list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']
print (list) # 输出完整列表 ['abcd', 786, 2.23, 'runoob', 70.2]
print (list[0]) # 输出列表第一个元素 abcd
print (list[1:3]) # 从第二个开始输出到第三个元素 [786, 2.23]
print (list[2:]) # 输出从第三个元素开始的所有元素 [2.23, 'runoob', 70.2]
print (tinylist * 2) # 输出两次列表 [123, 'runoob', 123, 'runoob']
print (list + tinylist) # 连接列表 ['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']
和字符串不能改变其中的元素不同,列表里面的可以改,而且简直是随便改,不要太方便。
a = [9, 2, 13, 14, 15, 6]
a[2:5] = [] # 将对应的元素值设置为 []
print(a) # 结果是 [9, 2, 6]
元组(Tuple)
此物老夫从未见过。特地去搜索了一下,Tuple这个词似乎是Python特有的,不像list之类的词在生活中还有别的含义。只好认真看教程了。
教程里解释:
元组写在小括号(())里,元素之间用逗号隔开,只有一个元素时,唯一的元素后面要加逗号。
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。
类似列表?行了,翻页。
集合:
存放无序不重复元素的序列,用于进行成员关系测试和删除重复元素。
重点:1)无序;2)不重复。
用{}或者 set() 函数创建集合。 setA = {'hatemath'} 或者 setA = set('hatemath')
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
常见集合运算有:并集 |, 差集 - ,交集&, 不同时存在的元素集 ^ (按我理解就是并集减去交集)
例子:
a = set('hate')
b = set('math')
print(a | b) # {'t', 'm', 'a', 'e', 'h'}
print(a - b) # {'e'}
print(a & b) # {'a', 't', 'h'}
print(a ^ b) # {'m', 'e'}
print( (a | b) - (a & b)) # {'e', 'm'} 果然就是我理解的意思。
集合,很好很强大。再见。
肚子饿了。。。15年前初学编程的时候,经常去计算中心上机,为了debug经常错过饭点,而且把零钱用光了。下机后跑去跟老板赊账吃饭(此处应该有个笑哭的表情)。过了这么多年还是喜欢编程,看来是真爱。
也有可能是因为我没把它当做谋生的手段。
字典:
字典是无序对象的集合,其中的元素时通过键(key)来存取的,取出来的叫值(value)。眼熟!java里面有这个玩意。我发现学这些高级特性的时候,跟c基本没啥关系了。。。。
既然是熟人,就直接看例子吧。
dict = {}
dict['one'] = "1 - 菜鸟教程"
dict[2] = "2 - 菜鸟工具"
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['one']) # 输出键为 'one' 的值 1 - 菜鸟教程
print (dict[2]) # 输出键为 2 的值 2 - 菜鸟工具
print (tinydict) # 输出完整的字典 {'name': 'runoob', 'site': 'www.runoob.com', 'code': 1}
print (tinydict.keys()) # 输出所有键 dict_keys(['name', 'site', 'code'])
print (tinydict.values()) # 输出所有值 dict_values(['runoob', 'www.runoob.com', 1])
C语言老司机学Python (二)的更多相关文章
- C语言老司机学Python (五)
今天看的是标准库概览. 操作系统接口: 用os模块实现. 针对文件和目录管理,还有个shutil模块可以用. 例句: import os os.getcwd() # 返回当前的工作目录 os.chdi ...
- C语言老司机学Python (六)- 多线程
前面的1-5都是比较基础的东西,能做的事情也有限. 从本节起,随着更多进阶技术的掌握,渐渐就可以用Python开始浪了. Python3使用threading模块来实现线程操作. 根据在其他语言处学来 ...
- C语言老司机学Python (一)
Python 版本:3.6.4 参考网上教程:http://www.runoob.com/python3/python3-basic-syntax.html 开始了啊. 干咱们这行的老规矩,学新语言的 ...
- C语言老司机学Python (四)
字符串格式化: 可以使用类似c语言中sprintf函数的方法进行格式化,但是函数名称是print() 如:print('常量 PI 的值近似为:%5.3f.' % var_PI) 注意var_PI ...
- C语言老司机学Python (三)
条件语句: 注意1) condition后面的冒号 2) elif if condition_1: statement_block_1elif condition_2: statement_block ...
- 老司机学新平台 - Xamarin开发之我的第一个MvvmCross跨平台插件:SimpleAudioPlayer
大家好,老司机学Xamarin系列又来啦!上一篇MvvmCross插件精选文末提到,Xamarin平台下,一直没找到一个可用的跨平台AudioPlayer插件.那就自力更生,让我们就自己来写一个吧! ...
- 老司机学新平台 - Xamarin Forms开发框架之MvvmCross插件精选
在前两篇老司机学Xamarin系列中,简单介绍了Xamarin开发环境的搭建以及Prism和MvvmCross这两个开发框架.不同的框架,往往不仅仅使用不同的架构风格,同时社区活跃度不同,各种功能模块 ...
- 从零开始部署Django生产环境(适用:《跟老齐学Python Django实战》)
<跟老齐学Python Django实战>作为市面上少有的Django通俗实战书籍,给了我学习Django很大的帮助.作为一名新入门的菜鸟,全书我重复练习了至少三遍,每次都有新的收获. 前 ...
- 跟着老王学Python
亲爱的朋友: 欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着 ...
随机推荐
- ORACLE 博客文章目录(2015
从接触ORACLE到深入学习,已有好几年了,虽然写的博客不多,质量也参差不齐,但是,它却是成长的历程的点点滴滴的一个见证,见证了我在这条路上的寻寻觅觅,朝圣的心路历程,现在将ORACLE方面的博客整理 ...
- Rhel-Server 5.5 安装ORACLE10
VMWARE + REDHAT + ORA10 先说一下环境,操作系统为Microsoft Windows Server 2003,安装的是虚拟机VMware Workstation Version ...
- Linux常用命令(二)--文件目录命令
1. 列表目录命令: 格式: ls [参数] 用于显示文件或目录信息 选项: -l 每行显示一个文件和目录信息(长格式),简写:ll等同于ls -l 注意:当参数是文件时,显示此文件全部信息 当参数是 ...
- nginx配置文件中的location理解
关于一些对location认识的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是"先匹配普通,再匹配正则 ...
- Ubuntu16.04下的2009q3交叉编译工具链的搭建
环境搭建: 1.下载arm-2009q3.tar.bz2源码. 百度云链接 密码: rbui 2.将arm-2009q3.tar.bz2拷贝到/usr/local/arm(没有该目录就 ...
- API函数详解:API大全总目录(按字母排列)
API函数详解 http://www.feiesoft.com/api/api.html
- VLAN 模式下的 OpenStack 管理 vSphere 集群方案
本文不合适转载,只用于自我学习. 关于为什么要用OpenStack 管理 vSphere 集群,原因可以有很多,特别是一些传统企业,VMware 的使用还是很普遍的,用 OpenStack 纳管至少会 ...
- 移动端 滑动删除 swipeDelete
功能比较简单常见,最近整理一下做备份记录.先看看线上 整体实际效果 下面是swipeDelete 用法 demo 默认参数 var defaults = { distance:80, //滑动距离 u ...
- 创建github仓库的gh-pages分支
用git symbolic-ref命令将当前工作分支由master切换到一个尚不存在的分支gh-pages. $ git symbolic-ref HEAD refs/heads/gh-pages 删 ...
- web.xml 文件中一般包括 servlet, spring, filter, listenr的配置的加载顺序
首先可以肯定 加载顺序与他们在web.xml 文件中的先后顺序无关. web.xml 中 listener 和 serverlet 的加载顺序为 先 listener 后serverlet最终得出结果 ...