• 文成小盆友python-num2 数据类型、列表、字典


    一.先聊下python的运行过程

    计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。

    当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到(然后通过比较确认是否为最新),则直接载入,否则就重复上面的过程。所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

    二.数据类型基本操作

    1.数字

      int -- 整形

      float -- 浮点型

      complex -- 复数

    2.布尔值

      真或假  

      1 或 0 

      True  或 False

    3.列表

      1.创建列表方法: 

    1 #!/bin/env python
    2 #-*- coding:utf-8 -*-
    3 
    4 name = ["jack","stove","janny"]
    5 
    6 ###或者
    7 
    8 name = list(["jack","stove","janny"])

      2.列表基本操作:

    • 切片(取出多个值):
    name[0:2]   #取出从下标为0 到下标为2的所有值 (包含前面不包含后面)
    
    name[-5:-1] #取出后四个(不包含最后)
    
    name[-5:]      #取出最后五个值
    
    name[0:6:2]  #最后值 2 为步长
    • 修改值
    name[2] = "LiMing"   #直接修改下标为2的元素的值
    
    name.insert(2,'liMing') #用insert方法来添加将值插入到下标为2的位置
    
    name.append("WangMeiei") #追加值
    • 删除值
    name.remove("LiMing") #直接写入要 删除的值
    
    
    ##del为python全局功能 也可以删除包括字符串等其他类型
    del name[1]                   #删除下标为1的元素
    
    del name[1:3]                #删除下标从1到3的值(不包括最后)
    • 判断元素是否在内
    # in 判断元素是否存在在列表中
    
    name = ["abc","bbb","ccc","","ddd"]
    
    if "abc" in name:
        print("abc ")
    else:
          print("err") 
    •  统计元素的个数:
    #
    name.count("abc")   #统计元素 abc在列表中出现的次数
    • 列表索引:
    #
    name.index("abc")   # 打印出元素9的索引

         count和index的结合使用小实例:     

    num_list = [1,2,3,44,55,24,56,357,9,432,9,5,555,9,22,9,345,34,34,34,34,1111111,34]
    print(num_list)
    num_9 = num_list.count(9)
    print(num_9)
    for i in range(num_9):
        in_num = num_list.index(9)
        num_list[in_num] = 99999
    print(num_list)
    
    num_34 = num_list.count(34)
    print(num_34)
    for i in range(num_34):
        in_num_34 = num_list.index(34)
        del num_list[in_num_34]
    print(num_list)

          显示如下:

    [1, 2, 3, 44, 55, 24, 56, 357, 9, 432, 9, 5, 555, 9, 22, 9, 345, 34, 34, 34, 34, 1111111, 34]
    4
    [1, 2, 3, 44, 55, 24, 56, 357, 99999, 432, 99999, 5, 555, 99999, 22, 99999, 345, 34, 34, 34, 34, 1111111, 34]
    5
    [1, 2, 3, 44, 55, 24, 56, 357, 99999, 432, 99999, 5, 555, 99999, 22, 99999, 345, 1111111]
    
    Process finished with exit code 0
    • 列表追加(追加新列表)
    #extend
    name = ["aaa","bbb","ccc"]
    name2 = ["ddd","eee","fff"]
    
    name.extend(name2)
    print(name)
    
    ###显示如下:
    ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff']
    
    Process finished with exit code 0
    • 列表翻转:
    name = ["aaa","bbb","ccc"]
    name2 = ["ddd","eee","fff"]
    name.reverse()
    print(name)
    
    ##显示如下:
    ['ccc', 'bbb', 'aaa']
    
    Process finished with exit code 0
    • 列表排序:
    name = ["bbb","aaa","ccc"]
    name.sort()
    print(name)
    
    ###显示如下
    ['aaa', 'bbb', 'ccc']
    
    Process finished with exit code 0
    
    ##python3.0中不允许数字与字符一起排序
    • 列表复制:
    name = ["bbb","aaa","ccc",[111,2222]]
    print(name)
    name2 = name.copy()
    print(name2)
    name[3][0]=3333   ##修改列表中所嵌套的列表的元素在比较
    name[0] = "jjj"        ##修改列表中的元素(非嵌套列表中的元素)    
    print(name) 
    print(name2)
    
    ###显示结果如下    
    ['bbb', 'aaa', 'ccc', [111, 2222]]
    ['bbb', 'aaa', 'ccc', [111, 2222]]
    ['jjj', 'aaa', 'ccc', [3333, 2222]]     
    ['bbb', 'aaa', 'ccc', [3333, 2222]]   #一级中的数值没有随着变化
    
    Process finished with exit code 0
    
    #######总结如下########
    name2 与 name 互相没有影响但是内部有嵌套的列表时则会有共享
    copy 默认只copy第一层
    • 列表长度
    name = ["bbb","aaa","ccc",[111,2222]]
    print(len(name))
    
    ##显示
    4

     4.元组(不可变列表)

    • 元组的声明:
    name_t = ("abc","ddd","aaa")
    • 元素个数统计
    name_t.count("abc")

    元组索引

    name_t.index("abc")

    5.字符串

    •  移除空白:srtip()
    name = input("please innsert your name:").strip()
    
    print(name)
    •  字符串切分:
    name = input("please innsert your name:").strip()
    
    name2 = name.split(",")
    print(name2)

          显示如下:

    please innsert your name:1,q,www,eert,gtf,d
    ['1', 'q', 'www', 'eert', 'gtf', 'd']
    
    Process finished with exit code 0

          拓展join在这的使用:如下

    name = input("please innsert your name:").strip()
    
    name2 = name.split(",")
    print(name2)
    print("|".join(name2))
    
    
    ##显示如下:输入的内容为 1,qwe,qwe,xcf,sdfsd,sds 
    please innsert your name:1,qwe,qwe,xcf,sdfsd,sds
    ['1', 'qwe', 'qwe', 'xcf', 'sdfsd', 'sds']
    1|qwe|qwe|xcf|sdfsd|sds        #----拼接后的内容
     
    • 判断是否存在:in
    name = input("please innsert your name:").strip()
    if " " in name :
        print("有空格。。。")
    else:
        print("无空格。。。")
    
    ##显示如下: 输入为dsf ds,,sdfkjdfs .sfd
    有空格。。。
    • 首字符大写:
    capitalize():即使中间有大写字符也要改成小写 如下输出
    name = 'sdddDDFSFssd '
    print(name.capitalize())
    print(name)
    
    ###显示结果如下:
    Sdddddfsfssd 
    sdddDDFSFssd 
    
    Process finished with exit code 0
    • 字符串的格式化
    1. 一般字符串格式化方法
     1 user_name = input("plz insert your name: ")
     2 user_age = int(input("plz insert your age: "))
     3 user_add = input("plz insert your add: ")
     4 
     5 print(user_name,user_add,user_age)
     6 msg = '''
     7 Infomation of user : %s
     8 ************************
     9     Name = %s
    10     Age = %d
    11     Add = %s
    12 **********end***********
    13 '''%(user_name,user_name,user_age,user_add)
    14 print(msg)
    15 
    16 ###结果如下
    17 
    18 plz insert your name: 赵文成
    19 plz insert your age: 22
    20 plz insert your add: 北京
    21 赵文成 北京 22
    22 
    23 Infomation of user : 赵文成
    24 ************************
    25     Name = 赵文成
    26     Age = 22
    27     Add = 北京
    28 **********end***********
    29 
    30 
    31 Process finished with exit code 0

      2.format方法格式化:

    msg = "hello ,{name}, your age is {age},your addr is {add} ....."
    msg2 = msg.format(name='zhaowencheng',age=26,add='beijing')
    print(msg2)
    
    ##输出如下:
    hello ,zhaowencheng, your age is 22,your addr is beijing .....
    
    Process finished with exit code 0
    • 切片   :同列表
    name = '123456789abcde'
    name1 = name[0]
    print(name1)
    name2 = name[6]
    print(name2)
    name3 = name[0:5]
    print(name3)
    name4 = name[0:5:2]
    print(name4)
    name5 = name[-1]
    print(name5)
    name6 = name[-5:]
    print(name6)
    
    ###对应显示分别如下
    
    1
    7
    12345
    135
    e
    abcde
    • center方法使用:
    name = 'welcome to shop'
    print(name.center(40,'-'))
    
    #显示如下:
    
    ------------welcome to shop-------------
    • isdigit()方法使用:
    num = input("please insert a number:")
    if num.isdigit():
        print("是数字")
    else:
        print("不是数字")
    
    ##显示的结果如下:
    please insert a number:sdfsd
    不是数字
    
    
    please insert a number:sdfsd
    不是数字
    • a.endswith() a.startswith()  -- 以XX结尾  XX开头
    num = input("please insert a str:")
    if num.endswith("m"):
        print("以m结尾")
    else:
        print("....")
    
    #结果如下: 
    
    please insert a str:sfdm
    以m结尾
    
    please insert a str:sdfsd
    ....
    • upper() lower()   分别是吧字符串大写,小写
    name3 = 'sdjfFsFFfj'
    print(name3.upper().lower())
    
    ##输出结果为
    
    sdjffsfffj

    6.字典

    • 定义字典:

      dic = {"key":"value"}

    id = {
    1: {"name": "aaa", "age": 23},
    2: {"name": "bbb", "age": 24},
    3: {"name": "ccc", "age": 25},
    }
    • 字典取值  两种方式取值分别如下
    id = {
        1: {"name": "aaa", "age": 23},
        2: {"name": "bbb", "age": 24},
        3: {"name": "ccc", "age": 25},
    }
    
    
    print(id[1]["name"])
    print(id.get(1).get("name"))

    ##打印内容为:

    aaa
    aaa

    • 字典的添加(修改)  有就修改,没有就添加
    id = {
        1: {"name": "aaa", "age": 23},
        2: {"name": "bbb", "age": 24},
        3: {"name": "ccc", "age": 25},
    }
    
    id[1] = {"name":"ddd","age":226}
    print(id)
    
    ####
    {1: {'name': 'ddd', 'age': 226}, 2: {'name': 'bbb', 'age': 24}, 3: {'name': 'ccc', 'age': 25}}
    • 字典删除 del pop 如下del
    id = {
        1: {"name": "aaa", "age": 23},
        2: {"name": "bbb", "age": 24},
        3: {"name": "ccc", "age": 25},
    }
    
    id[1] = {"name":"ddd","age":226}
    print(id)
    del id[1]
    print(id)
    
    ####
    {1: {'name': 'ddd', 'age': 226}, 2: {'name': 'bbb', 'age': 24}, 3: {'name': 'ccc', 'age': 25}}
    {2: {'name': 'bbb', 'age': 24}, 3: {'name': 'ccc', 'age': 25}}
    
    Process finished with exit code 0
    • 字典更新 update

      如下: id中的值被id2中的对应key的值更新(前提是id2中的key在id中也存在)

    id = {
        1: {"name": "aaa", "age": 23},
        2: {"name": "bbb", "age": 24},
        3: {"name": "ccc", "age": 25},
    }
    id2 = {
        1: {"name": "sss", "age": 23},
    }
    
    id3 = id.update(id2)
    print(id)
    
    ###输出如下:
    {1: {'name': 'sss', 'age': 23}, 2: {'name': 'bbb', 'age': 24}, 3: {'name': 'ccc', 'age': 25}}
    ##可以看到结果中key为1 的value被id2给更新了
    • 字典.items
     1 id = {
     2     1: {"name": "aaa", "age": 23},
     3     2: {"name": "bbb", "age": 24},
     4     3: {"name": "ccc", "age": 25},
     5 }
     6 id2=id[1]
     7 print(id2.items())
     8 
     9 ##输出结果
    10 dict_items([('age', 23), ('name', 'aaa')])
    11 
    12 Process finished with exit code 0
    • 字典.keys
     1 id = {
     2     1: {"name": "aaa", "age": 23},
     3     2: {"name": "bbb", "age": 24},
     4     3: {"name": "ccc", "age": 25},
     5 }
     6 
     7 print(id.keys())
     8 
     9 ##输出如下:
    10 dict_keys([1, 2, 3])
    • 字典.value
    id = {
        1: {"name": "aaa", "age": 23},
        2: {"name": "bbb", "age": 24},
        3: {"name": "ccc", "age": 25},
    }
    
    print(id.values())
    
    ##输出如下 
    dict_values([{'name': 'aaa', 'age': 23}, {'name': 'bbb', 'age': 24}, {'name': 'ccc', 'age': 25}])
    • 字典成员 in   (2.0版本可用 has_key)
    id = {
        1: {"name": "aaa", "age": 23},
        2: {"name": "bbb", "age": 24},
        3: {"name": "ccc", "age": 25},
    }
    if 1 in id:
        print("1 在id中")
    
    ## 输入如下:
    1 在id中
    • 字典 setdefault("key","v")  --有值则取出  没有则值设置为v
     1 id = {
     2     1: {"name": "aaa", "age": 23},
     3     2: {"name": "bbb", "age": 24},
     4     3: {"name": "ccc", "age": 25},
     5 }
     6 
     7 
     8 print(id.setdefault(4,"abc"))
     9 print(id.setdefault(1,"abc"))
    10 ##
    11 abc
    12 {'age': 23, 'name': 'aaa'}
    13 
    14 Process finished with exit code 0
    • 字典循环
    ##常用的循环取值方式如下:
    id = {
        1: {"name": "aaa", "age": 23},
        2: {"name": "bbb", "age": 24},
        3: {"name": "ccc", "age": 25},
    }
    print(id.items())
    for k,v in id.items():
        print(k,v)                     #此种方式过程中需要将字典转换为列表,如果数据量大的话则效率低
    
    ##
    for k in id:
        print(k,id[k])               #相对效率高
    
    ###打印结果如下:
    1 {'name': 'aaa', 'age': 23}
    2 {'name': 'bbb', 'age': 24}
    3 {'name': 'ccc', 'age': 25}
    1 {'name': 'aaa', 'age': 23}
    2 {'name': 'bbb', 'age': 24}
    3 {'name': 'ccc', 'age': 25}
    
    Process finished with exit code 0

    字典enumerate

    for item in enumerate(id):
        print(item)
    
    ##结果如下
    (0, 1)
    (1, 2)
    (2, 3)
    
    Process finished with exit code 0

    三.运算符

    • 算数运算
    运算符描述实例
    + 加 - 两个对象相加 a + b 输出结果 30
    - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10
    * 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
    / 除 - x除以y b / a 输出结果 2
    % 取模 - 返回除法的余数 b % a 输出结果 0
    ** 幂 - 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000
    // 取整除 - 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
    • 比较运算符
    运算符描述实例
    == 等于 - 比较对象是否相等 (a == b) 返回 False。
    != 不等于 - 比较两个对象是否不相等 (a != b) 返回 true.
    <> 不等于 - 比较两个对象是否不相等 (a <> b) 返回 true。这个运算符类似 != 。
    > 大于 - 返回x是否大于y (a > b) 返回 False。
    < 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 (a < b) 返回 true。
    >= 大于等于 - 返回x是否大于等于y。 (a >= b) 返回 False。
    <= 小于等于 - 返回x是否小于等于y。 (a <= b) 返回 true。
    • 赋值运算符
    运算符描述实例
    = 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
    += 加法赋值运算符 c += a 等效于 c = c + a
    -= 减法赋值运算符 c -= a 等效于 c = c - a
    *= 乘法赋值运算符 c *= a 等效于 c = c * a
    /= 除法赋值运算符 c /= a 等效于 c = c / a
    %= 取模赋值运算符 c %= a 等效于 c = c % a
    **= 幂赋值运算符 c **= a 等效于 c = c ** a
    //= 取整除赋值运算符 c //= a 等效于 c = c // a
    • 位运算符
    运算符描述实例
    & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
    | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
    ^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
    ~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
    << 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
    >> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111
    • 逻辑运算符
    运算符逻辑表达式描述实例
    and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
    or x or y 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 (a or b) 返回 10。
    not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False
    • 成员运算符
    运算符描述实例
    in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
    not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
    • 身份运算符
    运算符描述实例
    is is是判断两个标识符是不是引用自一个对象 x is y, 如果 id(x) 等于 id(y) , is 返回结果 1
    is not is not是判断两个标识符是不是引用自不同对象 x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1
    • 运算符优先级
    运算符描述
    ** 指数 (最高优先级)
    ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
    * / % // 乘,除,取模和取整除
    + - 加法减法
    >> << 右移,左移运算符
    & 位 'AND'
    ^ | 位运算符
    <= < > >= 比较运算符
    <> == != 等于运算符
    = %= /= //= -= += *= **= 赋值运算符
    is is not 身份运算符
    in not in 成员运算符
    not or and 逻辑运算符

         

      

  • 相关阅读:
    idea用法
    pagehelper用法
    mybatis
    多线程2
    radio 标签状态改变时 触发事件
    多线程
    a标签点击后,给a标签添加样式
    servlet
    mybatis 查询
    springmvc 发送PUT 和 DELETE 请求
  • 原文地址:https://www.cnblogs.com/wenchengxiaopenyou/p/5496576.html
Copyright © 2020-2023  润新知