zoukankan      html  css  js  c++  java
  • 再谈数据类型

      学过计算机编程的人都知道,计算机无论多么牛叉,其实都是在“天下武功,唯快不破”的基础上成立的。计算机可以处理文本,剪辑视频,修复音频,美化照片,显示网页,科学计算,这一切的一切都是建立数据的基础之上,每种编程语言的本质,就是通过编程,撰写计算机的命令集合,充分利用计算机可以不休息、速度快的特征让计算机帮着处理数据,提高处理的效率。无论哪一种编程语言,都需要预制一些数据类型,并且这些类型能够覆盖人类描述信息的需要。C语言中对数值的处理花的信息很多,符合类型的结构体、联合体和枚举类型,后来都被指针取代了,说C语言简单的,主要是入门比较简单,关键字少,但是C语言的主要难点在指针。C++在C的基础上扩展了面向对象,增加了很多普通用户难以理解和应用的语法,还好有Java语言将C++大大简化了一番,Java的流行应该说C++的功劳绝对不少了。现在主流的是python,由于在机器学习和AI中Python可以大显身手,所以Python很火。Python把主要的问题给隐藏了不少,但是python的缺点是无法区分真正的水平吧。哈哈。

      Python中的数据类型,就是语言规定了一些数据的规范和能够接受的操作方法。数值型(标量),能够参与算术运算的整型、浮点型、复数型、布尔型和空值;复合类型,列表、元组、字典、集合;字符串;文件对象;自定义类型等。

    一、数值型:

      1、整型:

     1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
     2 [GCC 9.2.0] on linux
     3 Type "help", "copyright", "credits" or "license()" for more information.
     4 >>> x = 5 + 2 - 3 * 4
     5 >>> x
     6 -5
     7 >>> 5 / 2
     8 2.5
     9 >>> 5 // 2
    10 2
    11 >>> 5 % 2
    12 1
    13 >>> 5 * 2
    14 10
    15 >>> 5 ** 2
    16 25
    17 >>> 

      说明:第4行中包含了将+ - ×,运算规则和数学中的运算规则完全一样

          第5-6行,查看结果和显示结果

          第7-8行,作除法运算显示结果,python3中新增的规则

          第9-10行,作地板除运算显示结果

          第11-12行,作取余运算显示结果

          第13-14行,作乘法运算显示结果

          第15-16行,作幂运算显示结果

        其他的数据类型浮点型和复数型都是一样的可以运算

        布尔型作算术运算时,只能有Ture=1和False=0两种值

      

     1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
     2 [GCC 9.2.0] on linux
     3 Type "help", "copyright", "credits" or "license" for more information.
     4 >>> x = 5.1 + 2.8 - 3.2 * 4.3
     5 >>> x
     6 -5.86
     7 >>> 5.1 / 2.5
     8 2.04
     9 >>> 5.1 // 2.5
    10 2.0
    11 >>> 5.1 % 2.5
    12 0.09999999999999964
    13 >>> 5.1 * 2.5
    14 12.75
    15 >>> 5.1 ** 2.5
    16 58.73885009088958

      本来以为11行会出错,居然没有,还出了结果,但是感觉不对阿

     1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
     2 [GCC 9.2.0] on linux
     3 Type "help", "copyright", "credits" or "license" for more information.
     4 >>> (3 + 2j) * (2 + 3j)
     5 13j
     6 >>> (3 + 2j) ** (2 + 3j)
     7 (0.6817665190890336-2.1207457766159625j)
     8 >>> x = (3 + 2j) * (2 + 3j)
     9 >>> x.real
    10 0.0
    11 >>> x.imag
    12 13.0
    13 >>> round(3.4)
    14 3
    15 >>> round(3.5)
    16 4
    17 >>> import math
    18 >>> math.ceil(3.49)
    19 4
    20 >>> math.f
    21 math.fabs(       math.floor(      math.frexp(      
    22 math.factorial(  math.fmod(       math.fsum(       
    23 >>> math.floor(3.99)
    24 3
    25 >>> y=False
    26 >>> x
    27 13j
    28 >>> y
    29 False
    30 >>> not y
    31 True
    32 >>> y
    33 False
    34 >>> y = True * 2
    35 >>> y
    36 2

      代码说明:

      第4-5行,复数乘法显示结果

      第6-7行,复数乘方显示结果

      第8行,将复数运算结果放到一个变量中

      第9-10行,获取复数变量的实部

      第11-12行,获取复数变量的虚部

      第13-14行,调用内部函数获取浮点的近似值,四舍五入方式

      第15-16行,调用内部函数获取浮点的近似值,四舍五入方式

      第17行,导入数学库

      第18-19行,应用数学库中函数获取浮点数的最大整数

      第20-24行,输入部分内容按下table键之后的自动补全后的内容,最终选择需要的函数,并显示结果

      第25,29行,定义bool变量,并显示结果

      第26-27行,显示x的结果,及结果显示

      第30-31行,bool变量运算及结果显示

      第32-33行,bool变量本身没有变化

      第34-36行,bool变量算术运算时,只能是1或0中的一个值


    二、列表:

      1、列表是数据的集合,并且数据可以不是同一种类型;

      2、列表中的数据可以通过索引访问,可以从头开始,也可以从尾开始

      3、通过切片获取新的列表

      4、列表有自己的内置函数和运算符

      5、列表的数据可以被修改,可以用list元组将转换成列表

     1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
     2 [GCC 9.2.0] on linux
     3 Type "help", "copyright", "credits" or "license" for more information.
     4 >>> x = ["first", '2th', 3, 4.999, True]
     5 >>> x[0]
     6 'first'
     7 >>> x[-1]
     8 True
     9 >>> x[2]
    10 3
    11 >>> x[-3]
    12 3
    13 >>> x
    14 ['first', '2th', 3, 4.999, True]
    15 >>> x[-1:]
    16 [True]
    17 >>> x[-5:]
    18 ['first', '2th', 3, 4.999, True]
    19 >>> x[:-1]
    20 ['first', '2th', 3, 4.999]
    21 >>> x[::2]
    22 ['first', 3, True]

     代码说明:

      第4行:定义列表x,每个元素类型都不相同

      第13行:列出列表的所有元素

      第5-6行:通过索引访问列表元素,索引正向从0开始,到长度-1结束

      第7-8行:通过索引访问列表元素,索引反向从-1开始,到-长度结束

      第9-13行:用两种方式访问列表的同一个元素

      第15-16行:对列表切片,从-1到结束

      第17-18行:对列表切片,从-5到结束

      第19-20行:对列表切片,从开始到-1,但是不包含-1所在的元素

      第21-22行:对列表切片,从开始到结束,但是增幅以2为增加单位

    也可以调用列表的函数:其他内部函数可以通过命令help(list)查看python帮助文件:

    Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
    [GCC 9.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> x=["first", '2th', 3, 4.999, True]
    >>> x
    ['first', '2th', 3, 4.999, True]
    >>> x.reverse()
    >>> x
    [True, 4.999, 3, '2th', 'first']                                                                        
    >>> x                                                                                                   
    [True, 4.999, 3, '2th', 'first']                                                                        
    >>> x.reverse()                                                                                         
    >>> x                                                                                                   
    ['first', '2th', 3, 4.999, True]                                                                        
    >>> len(x)                                                                                              
    5   

    三、元组help(tuple)查看帮助:

      1、元组是数据的集合,并且数据可以不是同一种类型;

      2、元组中的数据可以通过索引访问,可以从头开始,也可以从尾开始

      3、通过切片获取新的元组

      4、元组有自己的内置函数和运算符,元组用()包围即可

      5、元组的数据不可以被修改,但是可以被删除,元组自己的方法只有count和index,可以用tuple将列表转换成元组,其余和列表一样

    四、字典:

      1、和列表差不多,但是存储的数据主要是键值对,键要求是不能修改的唯一值,值可以是任意类型

      2、也有自己的方法可以用help(dict)查看帮助 

     1 >>> help(dict)
     2 
     3 >>> x={1:"one", 2:"two", 3:"three"}
     4 >>> x
     5 {1: 'one', 2: 'two', 3: 'three'}
     6 >>> x[4]="four"
     7 >>> x
     8 {1: 'one', 2: 'two', 3: 'three', 4: 'four'}
     9 >>> x[1]
    10 'one'
    11 >>> x[2]
    12 'two'
    13 >>> x[3]
    14 'three'
    15 >>> x.get(1, "not avilable")
    16 'one'
    17 >>> x.get(5, "not avilable")
    18 'not avilable'

      代码很简单,不说明了。

     五、集合:

      有对象组成的无序集,只关心对象的存在性和唯一性到可以考虑使用集合类型,像是没有键的字典一样。

     1 >>> y=set([1, 2, 3, 4, 5, 5, 3, 2])
     2 >>> y
     3 {1, 2, 3, 4, 5}
     4 >>> 1 in y
     5 True
     6 >>> 8 in y
     7 False
     8 >>> z = ([1, 2, 3, 4], [5, 5, 3, 2], "sample", 'hello')
     9 >>> z
    10 ([1, 2, 3, 4], [5, 5, 3, 2], 'sample', 'hello')
    11 >>> 3 in z
    12 False
    13 >>> sample in z
    14 Traceback (most recent call last):
    15   File "<stdin>", line 1, in <module>
    16 NameError: name 'sample' is not defined
    17 >>> 'sample' in z
    18 True

    六、字符串(help(strq):

      1、字符串是表示字符信息的重要工具,是不可修改的数据类型

      2、字符串可以被’‘   “”   ‘’‘ ’‘’包围

      3、字符串可以包含制表符和换行符号。

      4、字符串也有操作符(in、+、*)

      5、字符串也有内置函数(len、max、和min)

      6、字符串也可以索引和切片

      7、字符串类型本身有很多处理字符串的方法,在re模块中也有字符串的处理函数,若想查看re的帮助,需要先import  re,再help()命令即可

    七、文件对象:

      python通过文件对象访问文件,完成文件的读取或写入。

      文件的写入:

    1 >>> f=open("newfile", "w")
    2 >>> f.write("First line with necessary newline character
    ")
    3 44
    4 >>> f.write("Second line with sample newline character!
    ")
    5 43
    6 >>> f.close()

      文件的读取:

    1 >>> g = open("newfile", "r")
    2 >>> line1=g.read
    3 g.read(       g.readable(   g.readline(   g.readlines(  
    4 >>> line1=g.readline()
    5 >>> line2=g.readline()
    6 >>> print(line1, line2)
    7 First line with necessary newline character
    8  Second line with sample newline character!

      无论如何,一定要把文件对象关闭。

  • 相关阅读:
    hihoCoder #1078 : 线段树的区间修改
    hihoCode r#1077 : RMQ问题再临-线段树
    hihoCoder #1070 : RMQ问题再临
    hihoCoder #1068 : RMQ-ST算法(模板)
    LeetCode Valid Sudoku 有效数独
    150 Evaluate Reverse Polish Notation 逆波兰表达式求值
    149 Max Points on a Line 直线上最多的点数
    148 Sort List 链表上的归并排序和快速排序
    147 Insertion Sort List 链表插入排序
    146 LRU Cache 最近最少使用页面置换算法
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/11987179.html
Copyright © 2011-2022 走看看