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的时候比较少资料,学起来也比较头疼,现在随着 ...
随机推荐
- fullpage.js的easing参数怎样配置自定义动画
首先看非官方文档 并没有详细的说明怎样去使用easing.js,所以我加的运动属性根本就不起作用, 再看,官方文档 Optionally, when using css3:false, you can ...
- 【转】对GAMIT/GLOBK的基本认识
1.1 GAMIT/GLOBK软件可从网络上申请下载.该软件功能强大,用途广泛,一般包括精确定位,大气层可降水汽估计和空间电离层变化分析等.后两种用途只需要用到GAMIT模块,精确定位则还需要GL ...
- 前端通过Nginx反向代理解决跨域问题
在前面写的一篇文章SpringMVC 跨域,我们探讨了什么是跨域问题以及SpringMVC怎么解决跨域问题,解决方式主要有如下三种方式: JSONP CORS WebSocket 可是这几种方式都是基 ...
- 2、jQuery的一些静态方法
上次粗略说了jQuery的整体结构,这次挑一些静态方法先说一下吧 一.noConflict函数 这个函数是个比较有意思的函数,基本上很少用到,之所以说他是因为这个函数在最下面,太显眼了,先把他解决掉. ...
- rabbitmq配置文件和站点管理(二)
前面介绍了erlang环境的安装和rabbitmq环境安装,接下来对rabbitmq详细配置和管理: 启用后台管理插件 创建目录 mkdir /etc/rabbitmq 启用插件 rabbitmq-p ...
- Spring MVC + Spring + Mybitis开发Java Web程序基础
Spring MVC + Spring + Mybitis是除了SSH外的另外一种常见的web框架组合. Java web开发和普通的Java应用程序开发是不太一样的,下面是一个Java web开发在 ...
- BZOJ 3512: DZY Loves Math IV [杜教筛]
3512: DZY Loves Math IV 题意:求\(\sum_{i=1}^n \sum_{j=1}^m \varphi(ij)\),\(n \le 10^5, m \le 10^9\) n较小 ...
- centos 7 配置 到多站点设置
背景 : 前面配置了 win2008 WAMP环境, 这次因为一些事情 新买了服务器 只有 win2003 和 win2012, 试着配置2012 WAMP环境 发现比 2008 缺的配置文件多很多 ...
- [原]开源的视频转换器,支持gpu,绝对好用ffmpeg的GUI==》dmMediaConverter最新版本2.3
dmMediaConverter is a crossplatform FFmpeg frontend (GUI) exposing some of its features. It is inten ...
- 深入研究Spark SQL的Catalyst优化器(原创翻译)
Spark SQL是Spark最新和技术最为复杂的组件之一.它支持SQL查询和新的DataFrame API.Spark SQL的核心是Catalyst优化器,它以一种新颖的方式利用高级编程语言特性( ...