zoukankan      html  css  js  c++  java
  • 002.Python数据类型

    一 python语言注释

    就是对代码的解释, 方便大家阅读代码用的

    1.1 注释的分类

    (1)单行注释
    # print 在python2.x print "1"
    # print 在python3.x print("1")
    
    (2) 多行注释 : ''' ''' """ """
    '''
    print("abc")
    print("abcd")
    print("abcde")
    print("abcdef”)
    '''
    """
    print("abc")
    print("abcd")
    print("abcde")
    print("abcdef”)
    """

    1.2 嵌套注释

    注释嵌套的时候,如果外面是三个三引号,里面用三个双引号如果外面是三个双引号,里面用三个单引号.

    '''
    print("abc")
    print("abcd")
    """
    print("edc")
    """
    print("abcde")
    print("abcdef”)
    '''

    注释的排错性

    注释一部分代码,执行另外一部分,查看报错

    二 python变量

    2.1 变量的声明

    [root@node10 python]# vi test.py

    # 方法一
    a = 1
    b = 2
    print(a)
    print(b)
    
    # 方法二
    a,b = 3,4
    print(a,b)
    
    # 方法三
    a = b = 5
    print(a,b)

    [root@node10 python]# python3 test.py

    1
    2
    3 4
    5 5

    2.2 变量的命名规则

    • 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。
    • 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
    • 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。
    • 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
    • 慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0;

    注意:应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但避免使用大写字母是个不错的注意。

    [root@node10 python]# vi test.py

    # import 引入 keyword 模块名
    import keyword
    # 模块名.属性 kwlist 可以打印出所有的关键字
    res = keyword.kwlist
    print(res)

    [root@node10 python]# python3 test.py

    ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

    2.3 变量的交换

    通用的交换写法

    a = 11
    b = 12
    tmp = a
    a = b
    b = tmp
    print(a,b)

    python写法

    [root@node10 python]# vi test.py 

    a = 11
    b = 12
    a,b = b,a
    print(a,b)

    [root@node10 python]# python3 test.py

    12 11

    三 Python的六大数据类型

    数值类型Number( int float bool complex)

    (1) Number数字类型( int float boo1 compplex)

    (2) string字符串类型

    (3) List列表类型

    (4)Tuple元组类型

    (5)Set集合类型

    (6)Dict

    字典类型

    ->(1)Number数字类型分类

    int: 整数类型(正整数【各种进制】负整数0)

    folat:浮点数类型(1普通小数2科学计数法表示的小数例:a=3e-5  #3e-05)

    bool:布尔值类型(真True和假 false)

    compex:复数类型(声明复数的2种方法)(复数用作于科学计算中,表示高精度的数据,科学家会使用)

    3.1 整型

    [root@node10 python]#vim test.py

    # int 整型  (正整型  0  负整型)
    intvar = 133
    print(intvar)
    
    # type 获取一个变量的类型 type(值)
    res = type(intvar)
    print(res)
    
    # id  获取该变量所指向值的地址 id(值)
    res = id(intvar)
    print(res)
    
    
    # 打印二进制
    intvar = 0b101
    print(intvar)
    print(type(intvar))
    print(id(intvar))
    
    
    # 打印八进制
    intvar = 0o127
    print(intvar)
    print(type(intvar))
    print(id(intvar))
    
    # 打印十六进制
    intvar = 0Xff
    print(intvar)
    print(type(intvar))
    print(id(intvar))

    [root@node10 python]# python3 test.py

    133
    <class 'int'>
    140050073843520
    5
    <class 'int'>
    140050073839424
    87
    <class 'int'>
    140050073842048
    255
    <class 'int'>
    140050073847424

    3.2 浮点型float

    # 表达一
    floatvar  =  3.15
    print(floatvar,type(floatvar))
    
    # 表达二
    floatvar = 5.35e-3
    floatvar = 7.34e5
    print(floatvar,type(floatvar)

    [root@node10 python]# python3 test.py

    3.15 <class 'float'>
    734000.0 <class 'float'>

    3.3 布尔型(True 真的 False 假的)

    boolvar = True
    boolvar = False  
    print(boolvar,type(boolvar))

    [root@node10 python]# python3 test.py

    False <class 'bool'>

    3.4 复数型

    # 1.方式一
    complexvar = 3+4j
    print(complexvar,type(complexvar))
    
    # 2.方式二 complex(实数,虚数)
    complexvar = complex(-5,-2)
    print(complexvar)

    [root@node10 python]# python3 test.py

    (3+4j) <class 'complex'>
    (-5-2j)

    四 容器类型数据

    4.1  str 字符串类型

    用引号引起来的数据就是字符串

    # 转义字符: 
    (1) 将有意义的字符变得无意义
    (2) 将无意义的字符变得有意义 
    
    
    ,
     代表换行
    	 代表缩进 (水平制表符)
    
     代表将后面的字符拉到当前行行首
    
    可以用把有意义的引号变得无意义
    # (1) 单引号
    strvar = 'mylove'
    print(strvar,type(strvar))
    
    # (2) 双引号 
    strvar = "facebook,
    google"
    print(strvar,type(strvar))
    strvar = "facebook,	googl
    e"
    print(strvar,type(strvar))
    strvar = "facebook,
    google"
    print(strvar,type(strvar))
    strvar = "face"boo"k"
    print(strvar,type(strvar))
    
    # (3) 三引号 (支持跨行 无需对单双引号重新转义)
    strvar = """本来无一物,
    何处惹尘埃"""
    strvar = '''本来"无"一'物',
    何处惹尘埃'''
    print(strvar)

    [root@node10 python]# python3 test.py

    mylove <class 'str'>
    facebook,
    google <class 'str'>
    facebook,    googl
    e <class 'str'>
    google <class 'str'>
    face"boo"k <class 'str'>
    本来""'',
    何处惹尘埃

    4.2 元字符串

    原型化输出字符串,让转义字符失效

    strvar = r"床前明月光,
    疑是地上霜"    #取消
    的转义效果
    print(strvar)
    strvar = r"C:WindowsSystem32driversetc"
    print(strvar)

    [root@node10 python]# python3 test.py

    床前明月光,
    疑是地上霜
    C:WindowsSystem32driversetc

    4.3 字符串的格式化

    # %d 整型占位符
    strvar = "我有%d支铅笔" % (10)
    print(strvar)
    # %2d 默认数字具右
    strvar = "我有%2d支铅笔"  % (3)
    print(strvar)
    # %-2d 默认数字具左
    strvar = "我有%-3d支铅笔"  % (3)
    print(strvar)

    [root@node10 python]# python3 test.py

    我有10支铅笔
    我有 3支铅笔
    我有3  支铅笔

    4.4 %f浮点型占位符

    默认小数点后面保留6位

    strvar = "一包烟的价格是%f元" % (9.99)
    print(strvar)
    # %.1f 存在四舍五入
    strvar = "一包烟的价格是%.3f元" % (9.99)
    print(strvar)
    strvar = "一包烟的价格是%.1f元" % (9.99)
    print(strvar)

    [root@node10 python]# python3 test.py

    一包烟的价格是9.990000元
    一包烟的价格是9.990元
    一包烟的价格是10.0元

    4.5 %s 字符串占位符

    strvar = "%s" % ("今天学习python")
    print(strvar)

    [root@node10 python]# python3 test.py

    今天学习python

    五 列表类型

    可获取,可修改,有序

    5.1 定义一个空列表

    listvar = []
    print(listvar,type(listvar))

    [root@node10 python]# python3 test.py

    [] <class 'list'>

    5.2 正向索引

    listvar = [13,3.14,True,6-2j,"好好学习"]
    print(listvar,type(listvar))

    [root@node10 python]# python3 test.py

    [13, 3.14, True, (6-2j), '好好学习'] <class 'list'>

    5.3 正向取值和反向取值

    listvar = [13,3.14,True,6-2j,"好好学习"]
    res = listvar[4] 
    print(res)
    res = listvar[-1]
    print(res)

    [root@node10 python]# python3 test.py

    好好学习
    好好学习

    5.4 通用用法

    => 想要获取列表最后一个元素值 需要通过len函数
    len 用来获取容器类型数据的元素个数(长度)

    listvar = [13,3.14,True,6-2j,"好好学习"]
    res = listvar[4] 
    print(res)
    res = listvar[-1]
    print(res)
    # 通用 => 想要获取列表最后一个元素值 需要通过len函数
    # len 用来获取容器类型数据的元素个数(长度)
    # 5 - 1 => 4
    res = len(listvar)-1
    
    print(listvar[res])  
    print(listvar[len(listvar)-1])

    [root@node10 python]# python3 test.py

    好好学习
    好好学习
    好好学习
    好好学习

    5.5 修改列表当中的值

    listvar = [13,3.14,True,6-2j,"好好学习"]
    res = listvar[4] 
    print(res)
    res = listvar[-1]
    print(res)
    #修改列表当中的值 listvar[
    3] = "天天" listvar[-4] = "向上" print(listvar)

    [root@node10 python]# python3 test.py

    好好学习
    好好学习
    [13, '向上', True, '天天', '好好学习']

    六 tuple类型

    可获取,不可修改,有序

    证明是一个元组的根本特征是逗号,声明一个空元组,可以直接使用(),(1) 表明一个整型

    6.1  声明元组 

    tuplevar = ()
    print(tuplevar,type(tuplevar))
    tuplevar = (1,2,3,4)
    print(tuplevar,type(tuplevar))
    tuplevar = (1)
    print(tuplevar,type(tuplevar))
    tuplevar = (1,)
    print(tuplevar,type(tuplevar))
    tuplevar = 1,2,3
    print(tuplevar,type(tuplevar))

    [root@node10 python]# python3 test.py

    () <class 'tuple'>
    (1, 2, 3, 4) <class 'tuple'>
    1 <class 'int'>
    (1,) <class 'tuple'>
    (1, 2, 3) <class 'tuple'>

    6.2 获取最后一个值

    #正向索引    0  1   2
    tuplevar = ("a","b",False)
    #逆向索引    -3  -2  -1
    res = tuplevar[-1]
    #或者 res = tuplevar[len(tuplevar)-1]
    print(res)

    [root@node10 python]# python3 test.py

    False

    6.3 元组不可修改

    尝试修改

    tuplevar = ("a","b",False)
    tuplevar[-1] = True 
    res = tuplevar[-1]
    print(res)

    [root@node10 python]# python3 test.py

    Traceback (most recent call last):
      File "test.py", line 2, in <module>
        tuplevar[-1] = True 
    TypeError: 'tuple' object does not support item assignment

    七 容器类型数据 set 和 dict

    set 集合 (用来做交叉并补 集合操作的)

    自动去重 无序

    7.1 定义一个空集合

    setvar = set()  #{} 不是集合 而是一个字典
    print(setvar,type(setvar))

    [root@node10 python]# python3 test.py

    set() <class 'set'>

    7.2 自动去重

    无序

    setvar = {"周杰伦","王宝强","李宇春"}
    print(setvar)
    setvar = {"刘德华","张学友","郭富城","王文","王文"}
    print(setvar)

    [root@node10 python]# python3 test.py

    {'周杰伦', '王宝强', '李宇春'}
    {'刘德华', '王文', '张学友', '郭富城'}

    7.3 dict字典

    在3.6版本之前,字典无序,
    在3.6版本之后,字典有序(看起来有序,本质上无序)
    哈希算法:
        将不可变的任意长度值计算成具有固定长度的唯一值,这个值可正可负,可大可小,通过计算出来的键,来获取值,形成一一映射的效果,管这个算法叫哈希算法,这个值叫哈希值
        字典进行存储的时候,并不一定按照字面顺序依次存在内存中,而是通过哈希算法,随机散列的把键所对应的值存储在内存里,所以字典无序(为了求效率,图快),可以通过哈希算出的键获取散列的值
        3.6的之后,记录了字典的字面顺序,在取出数据时,进行重新排序,所以看起来有序(但本质上无序,只要他使用了哈希)
        可哈希数据(不可变的数据) : Number(int float complex bool) str tuple
        不可哈希数据(可变数据)   : list  set  dict  (list dict 值可变 ; set 顺序可变)
        字典的键 集合的值 都需要可哈希数据,剩下的数据无所谓.
    由键值对数据组成,有序

    定义一个空字典

    dictvar = {}
    print(dictvar,type(dictvar))

    [root@node10 python]# python3 test.py

    {} <class 'dict'>

    字典语法:

    # 语法:
    dictvar = {'a':1}
    # "键" : "值" 键和值之间用冒号隔开, 键值对之间用逗号隔开

    定义一个字典

    dictvar = {"top":"程咬金" , "middle":"妖姬" , "bottom":"崔丝塔娜" , "jungle":"七大大声" , "support":"德玛西亚"}
    print(dictvar,type(dictvar))

    [root@node10 python]# python3 test.py

    {'top': '程咬金', 'middle': '妖姬', 'bottom': '崔丝塔娜', 'jungle': '七大大声', 'support': '德玛亚'} <class 'dict'>

    获取字典当中的值 (通过键来获取值)

    dictvar = {"top":"程咬金" , "middle":"妖姬" , "bottom":"崔丝塔娜" , "jungle":"七大大声" , "support":"德玛西亚"}
    print(dictvar,type(dictvar))
    res = dictvar['middle']
    print(res)

    [root@node10 python]# python3 test.py

    {'top': '程咬金', 'middle': '妖姬', 'bottom': '崔丝塔娜', 'jungle': '七大大声', 'support': '德玛亚'} <class 'dict'>
    妖姬

    通过字典的键来修改值

    dictvar = {"top":"程咬金" , "middle":"妖姬" , "bottom":"崔丝塔娜" , "jungle":"七大大声" , "support":"德玛西亚"}
    print(dictvar,type(dictvar))
    res = dictvar['middle']
    print(res)
    dictvar['top'] = "赵信"
    print(dictvar)

    [root@node10 python]# python3 test.py

    {'top': '程咬金', 'middle': '妖姬', 'bottom': '崔丝塔娜', 'jungle': '七大大声', 'support': '德玛亚'} <class 'dict'>
    妖姬
    {'top': '赵信', 'middle': '妖姬', 'bottom': '崔丝塔娜', 'jungle': '七大大声', 'support': '德玛西'}

    可哈希数据 (字典)  不推荐如下使用键  一般就用变量命名的字符串形式去定义键

    dictvar = {35:1,36:True,3.15:"111",False:"112233",3+2j:12,"你好":78,  (11,22,333):4  }
    print(dictvar)
    # 获取4
    print(dictvar[(11,22,333)])
    dictvar[False] = 67
    print(dictvar)

    [root@node10 python]# python3 test.py

    {35: 1, 36: True, 3.15: '111', False: '112233', (3+2j): 12, '你好': 78, (11, 22, 333): 4}
    4 
    {35: 1, 36: True, 3.15: '111', False: 67, (3+2j): 12, '你好': 78, (11, 22, 333): 4}

    字典的键唯一 如果两个键相同 后面的覆盖前面的
    字典的键是唯一不可修改,字典的值随意

    dictvar = {"a":1,'a':2}
    print(dictvar)

    [root@node10 python]# python3 test.py

    {'a': 2}
  • 相关阅读:
    C++开发系列-友元函数 友元类
    C++开发系列-C语言的malloc与C++的new分配空间
    C++开发系列-内联函数
    iOS开发系列-Foundation与CoreFoundation内存管理
    C开发系列-字符串
    C开发系列-数组
    列表 元组 字典
    神奇的print
    while 语句的逻辑
    <Web Crawler><Java><thread-safe queue>
  • 原文地址:https://www.cnblogs.com/zyxnhr/p/12253757.html
Copyright © 2011-2022 走看看