数据类型
基本类型
Python的基本数据类型和大部分高级语言都相似,包括布尔型(Bool)用来表示一个事件的真伪、整型(int)用来表征一个整数,浮点型(float)用来表征一个小数、字符串(string)用来表示一串字符,与C++的字符串不同的是,Python字符串既可以用双引号,也可以用单引号括起来,两种操作是等价的。
可以看得出,Python的数据类型不仅影响力被大大削弱,其数量也被削减:尤其是去掉了字符型(char)、双精度浮点型(double)还有很多本菜鸡很少使用的类型(long)、(short)等等,其中最大快人心的是剔除了字符型?……当时在学习C++的时候字符串是单独的章节,在学习了流程控制、集合之类的概念之后才提到,那时候表征一串字符就只能用字符数组,不仅操作繁琐,还有“爆表”的危险,现在想来还是有些痛苦的。
Python的浮点数在运算时会有四舍五入的误差,如:
print( 12.1 / ( 10 ** 8 ) )
# 其结果为:
# 1.2099999999999998e-07
另一个需要注意的地方是Python3和Python2在处理两个不能整除的整数除法(也就是3/2这种)时解决办法有些不同,Python2的处理方法类似C++,先保证数据类型的前后统一,因此会采用常规的去尾法,而Python3即使运行两个整数除法,在除不开时也会自动转化成浮点数。
如下图:
![](https://img.haomeiwen.com/i12266405/29224fd39e8be1b2.png)
卧槽类型
所谓的“卧槽类型”实际上是我给其的诨名,在学数据结构这门课的时候,有时候课程作业是做Open Judge,本菜鸡受够了用数组强行解题(因为真的真的很恶心),就自己学了一点C++常用的头文件,当初看到人家写好的数据类型里面各种事实上已经完备的方法,第一个念头就是“卧槽真高级啊”,但是类似列表啥的取个总称叫“高级类型”似乎又太Low,索性叫“卧槽类型”吧。
教材里对卧槽类型的数据都只有简答的介绍,因为在后面还有详细的教程,所以这里先粗粗过一遍,至于内置的方法函数,到时候自然会详细说明。
列表(List)
用[]表示一个列表,其内容可以是任何东西——想当然,也可以是列表,也可以是其他的卧槽类型,甚至一个列表里的元素其类型也可以不同,或者说列表就是一堆对象的排列,大家都是对象,求大同存小异嘛哈哈哈哈
列表有其索引(实际上就是编号),用来做访问的一个凭证,根据计算机的一贯做法,编号是从0开始的。
元组(tuple)
C++里好像是没有元组的概念,这种数据类型和列表相似,但其中的元素不可修改,因此,和列表作出区别,元组使用()把元素框起来并用“,”分隔。
集合(set)
集合和列表也比较相似,但是不支持元素重复(多说一句,List的重复剔除貌似还是一个挺重要的操作),私以为集合更偏重于一堆元素和另一堆的逻辑关系,其方法很多都是两个集合求交并补,这一点应该和List也有点区别。
字典(dict)
字典是无序的!
但是它有关键字和关键字对应的词,类似一本真正的字典有词条明目和词条内容,而且两者是对应的——想当然,不会有两个相同的词条明目,但是应该可以存在两个明目里面写的东西没有区别。
#几个卧槽类型的创建与元素访问
list1 = [1,2,3,"hello world"]
list2 = [1,"hello 个jb world",list1] #List里可以有其他List
print(list2[2][0]) #并不是二维,只是穿透了一层List
list1[0] = 100
print(list1[0])
tuple1 = (1,2,"hello")
# tuple1[2] = "world" 这里报错 'tuple' object does not support item assignment
print(tuple1[0])
set1 = [1,2,list1] #Set里可以有List
set2 = [4,5,set1] #Set里也可以有其他Set
dict1 = {'name':"DRF",'age':19} Dict用{}创建
print(dict1)
print(dict1['name'])
#本段程序之结果是:
1
100
1
{'name': 'DRF', 'age': 19}
DRF
多说几句
这几天陆陆续续自己写了几段Python的代码,深深为两个大版本不兼容而有些头疼,从网上很多社区论坛找到的解决办法与历史渊源介绍之类也略略看了一些,总觉得还是不太满意,不过如果像C++为了一直前后贯通搞得最后像是个巨无霸一样,好像也让人好受不到哪去。
🤷♂️
网友评论