zoukankan      html  css  js  c++  java
  • 《Python学习之路 -- Python基础之数据类型》

      计算机是处理数值运算和逻辑运算的高级电子设备,因此,计算机程序理所当然会处理各种各样的数据,不同的数据需要定义不同的数据类型。而在Python中,能够直接处理的数据类型有以下几种:

    ①整型(int)

      Python可以处理任意大小的整数,当然也包括负整数。在程序中的表示方法和数学上的写法基本一致,例如:1,200,-8080等等。整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数池,避免为整数频繁申请和销毁内存空间。Python对小整数的定义是 [-5,257) 这些整数对象是提前建立好的,不会被垃圾回收,也就是说,在一个Python程序中,所有位于这个范围的整数使用的都是同一个对象,例如:

    由上图可见,5000不在整数池范围内,所以使用的两个对象,而数值5则都是同一个对象。(注:id()方法用于返回变量的内存地址)

    ②浮点型(float)

       浮点数也就是小数,之所以成为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23 * 109 就是1.23e9,或者12.3e8,浮点数也可以用数学的写法,比如:1.23 ,3.14 , -9.07等等。但是对于很大或者很小的浮点数,就必须使用科学计数法表示。注意:整数和浮点数在计算机内部的储存方式是不同的,整数运算永远是精确的(包括除法),而浮点数的运算则有可能会有四舍五入的误差。

    ③字符类型(str)

      字符串是以单引号或双引号括起来的任意文本,比如'abc' , "xyz"等,请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。与JS一样,在Python中可以使用表示转义字符,但是在Python中,如果字符串中包含有歧义的转义字符,但是又不需要转义的时候可以使用r''来表达:

    print('hello	world')  # 输出: hello world
    print(r'hello	world') # 输出: hello	world

    所以,如果字符串里面含有转义字符但是又不期望转义的,只需要在字符串前加上 r 即可实现。

    另外,字符串有很多操作的方法,详见《Python学习之路 -- 字符串的方法》 

     

    ④布尔类型(bool)

      与其他编程语言一样,Python也只有两种:True和False,注意首字母大写(在某些编程语言为小写,比如JavaScript),而且在Python中也同样提供了布尔值的或与非运算:

    与运算:使用 and 关键字

    True and True
    >>>True
    True and False
    >>>False
    False and False
    >>>False
    5 > 3 and 3 > 1
    >>>True
    1 and 2
    >>>2

    或运算:使用 or 关键字

    True or True
    >>>True
    True or False
    >>>True
    False or False
    >>>False
    5 > 3 or 1 > 3
    >>>True
    1 or 2
    >>>1

    非运算:使用 not 关键字

    not True
    >>>False
    not False
    >>>True
    not 1 > 2
    >>>True

    与JavaScript相似的是,在或与运算中,如果运算的两者不是布尔类型,则结果也不会返回一个布尔值,而是返回对应的值(上面标红部分)

    ⑤空值(None)

      空值是Python里一个特殊的值,用None表示(相当于JavaScript中的null)。

    ⑥列表(list) (相当于JavaScript中的数组)

      列表是Python中内置的一种数据类型list,是一种有序的集合,就像JavaScript中的数组一样,都使用方括号 [  ] 来表示,里面存放的被称为元素,一个列表可以存储多个元素(定义一个列表不需要像Java一样定义它的长度,Python中的列表也没有长度限制),也可以随时添加或删除元素;也可以通过下标索引的方式来读取或修改元素。

    # 定义一个列表储存人的名字
    names = ['Jack','Jonas','Tom','Bob']
    # 通过下标索引(从0开始的自然数)读取列表中的元素
    print(names[0])  # 输出 Jack
    # 通过下标索引修改第三个元素Tom为Jerry
    names[2] = 'Jerry'
    # 打印整个列表
    print(names)  # 输出 ['Jack', 'Jonas', 'Jerry', 'Bob']

    除了通过索引的方式操作元素以外,列表还提供了很多操作元素的方法,详见《Python学习之路 -- 列表的方法》。 

    ⑦元组(tuple)

       元组也是Python内置的一种数据类型,访问元组内的元素与列表也一致,但是与列表不同的是,元组一旦初始化就不能修改,列表使用方括号 [   ] 来表示,而元组使用小括号 (   )  来表示,使用元组需要注意以下事项:

    1、元组一旦初始化,则不能修改,但是如果元组内的元素是可变类型(比如说列表),则可以对元组内的可变类型的数据进行修改:

    # 创建一个元组,里面包含了一个列表和两个数字
    num_tuple = ([1,2,3],5,6)
    # 修改列表(append()方法是列表的内置方法,用于向列表的末尾添加元素)
    num_tuple[0].append(4)   
    # 打印元组观察  
    print(num_tuple)  # 输出:([1,2,3,4],5,6)

     2、当元组只储存一个元素时,该元素后必须加上逗号,用于告知解释器该变量储存的数据类型是元组而不是一个小括号

    # 如果只有一个元素时,不加逗号
    num_tuple = (1)
    # 打印结果,type()方法用于检查变量的类型
    print(num_tuple,type(num_tuple))  # 输出 1 类型为int
    # 加上逗号才是一个元组,这就是逗号的魅力
    num_tuple = (1,)
    print(num_tuple,type(num_tuple))  # 输出 (1,) 类型为tuple

     3、元组内的元素一旦声明则不能修改,但是可以通过del关键字将保存该元组的引用变量删除

    4、元组的两个内置方法:count 和index

    tuple.count(value)

    该方法用于统计value值在元组中出现的次数,结果返回这个次数。

    tuple.index(value,start=None,stop=None)

    该方法用于检索元组中是否含有value值,若存在,则返回首次出现的下标索引;不存在则会报错。

    num_tuple = (1,2,3,4)
    # 统计2在元组内出现的次数
    num = num_tuple.count(2)
    # 检索3在元组内的索引
    num_index = num_tuple.index(3)
    print(num,num_index)  # 输出: 1   2

    ⑧字典(dict)

       同样的,字典也是一种内置数据类型,使用键-值(key-value)的方式存储数据,字典以大括号{   }的形式来表示,一个字典可以存储多个键值对,键与值之间使用冒号:来分隔,而键值对与键值对之间使用逗号来分隔。字典具有极快的查找速度,通过dict['key]的方式来访问对应的value值,但是通过这种方式找不到对应的value则会报错,如果使用字典的内置方法dict.get('key')方法来访问,如果找不到则不会报错,而是返回None

    # 创建一个字典表示一个人的信息
    person = {'name':'jonas','age':18,'gender':'male','address':'China'}
    # 访问字典的某个value
    print(person['name'])  # 输出 jonas
    print(person['salary'])  #该属性不存在,程序报错

    除了这种操作以外,字典还有很多方法,详见《Python学习之路 -- 字典的方法》

    ⑨集合(set)

      集合也是Python的一种数据类型,集合使用大括号{   }来表示,可以将集合理解为削弱版的字典,因为集合只保存key,没有value,而且保存的key必须是不可变类型,也不能出现重复,如果出现重复的数据,解释器则会直接将重复的过滤掉。

    # 创建一个集合
    num_set = {1,2,3,3}
    # 若出现重复的数据,则会直接过滤重复的部分
    print(num_set)  # 输出{1,2,3}
    # 向集合中添加元素
    num_set.add(4)
    print(num_set)  # 输出{1, 2, 3, 4}
    # 删除集合中的元素,如果删除集合中没有的元素,则会报错
    num_set.remove(2)
    print(num_set)  # 输出{1, 3, 4}
    # 删除指定元素,如果删除的元素不存也不会报错
    num_set.discard(5)
    print(num_set)  # 输出 {1, 3, 4}
    # 随机删除集合中的元素
    num_set.pop()
    print(num_set)  # 输出不确定(因为随机删除)

    除了以上的几个方法,集合还有四种逻辑运算:

    1、交集(等价于高中数学里面讲的交集,取两个集合的公共部分)

    name_set = {'jonas','tom','jerry','ben'}
    name_set2 = {'jonas','ben'}
    # 以下两种方法都可以求两个集合的交集,输出{'ben', 'jonas'}
    print(name_set & name_set2)
    print(name_set.intersection(name_set2))

    2、并集(将两个集合的所有元素合并在一起,但去掉重复的部分)

    name_set = {'jonas','tom','jerry','ben'}
    name_set2 = {'jonas','ben'}
    # 以下两种方法等价,输出{'tom', 'jerry', 'jonas', 'ben'}
    print(name_set | name_set2)
    print(name_set.union(name_set2))

    3、差集(举例:A集合与B集合的差集就是A集合有而B集合没有的元素)

    name_set = {'jonas','tom','jerry','ben'}
    name_set2 = {'jonas','ben'}
    # 以下两种方式等价,输出{'jerry', 'tom'}
    print(name_set - name_set2)
    print(name_set.difference(name_set2))

    4、交叉补集(举例:先取A,B两个集合的并集,然后减去他们两个的交集,剩下的就是交叉补集)

    name_set = {'jonas','tom','jerry','ben'}
    name_set2 = {'jonas','ben','jack'}
    # 以下两种方式等价,输出{'jack', 'tom', 'jerry'}
    print(name_set ^ name_set2)
    print(name_set.symmetric_difference(name_set2))
  • 相关阅读:
    jquery 实现 html5 placeholder 兼容password密码框
    php返回json的结果
    使用PHP读取远程文件
    Sharepoint 自定义字段
    Sharepoint 中新增 aspx页面,并在页面中新增web part
    【转】Sharepoint 2010 配置我的站点及BLOG
    JS 实现 Div 向上浮动
    UserProfile同步配置
    【转】Import User Profile Photos from Active Directory into SharePoint 2010
    Sharepoint 2010 SP1升级后 FIMSynchronizationService 服务无法开启
  • 原文地址:https://www.cnblogs.com/jonas-von/p/8920660.html
Copyright © 2011-2022 走看看