zoukankan      html  css  js  c++  java
  • Python之路-python数据类型(列表、字典、字符串、元祖)操作

    一、列表:

      列表的语法,以中括号开通和结尾,元素以逗号隔开。例如:name = []

      列表是以下标取值,第一个元素下标是0,第二个元素下标是1,最后一个元素下标是-1.

         1、增加

    #name = ["zhangsan","lisi","wanger","liwu"]
    #name[1] = "wang"#在列表name的下标为1的位置增加一个元素"wang",当然这个下标原来的元素也就没有了,也同样是修改
    #print(name)
    #['zhangsan', 'wang', 'wanger', 'liwu']
    插入法,name.insert(下标,要插入的元素名称)
    #name.insert(0,"li")
    #name.append("haha")#增加到最后一个

    2、删除
    #del name[1]#删(del并不是列表的专属,它可以也可以删除别的,例如直接删除变量)
    #name.pop(0)#默认删除最后一个,可以加上列表下标
    #name.remove("zhangsan")

    3、修改
    #name = ["zhangsan","lisi","wanger","liwu"]
    #name[1] = "wang"#
    #['zhangsan', 'wang', 'wanger', 'liwu']

    4、统计(count)

    #name = ["zhangsan","lisi","wanger","liwu"]
    #print(name.count("zhangsan"))
    #1 #这里的1是代表zhangsan这个元素只有一个
      5、索引(获取元素的下标)(index)
    #name = ["zhangsan","lisi","wanger","liwu"]
    #print(name.index("lisi"))
    #1 #这里的1则表示lisi这个元素在列表中的下标是1

    6、排序(sort)
    #name = ["zhangsan","lisi","wanger","liwu","123","456"]
    #print(name.sort())
    #TypeError: unorderable types: int() < str()#python3里面不同类型的数据不能排序,python2.x里面可以排序,按照ASCII码排序。

      7、翻转(reverse
    # name = ["zhangsan","lisi","wanger","liwu","3","2","1"]
    # name.reverse()
    # print(name)
    #['1', '2', '3', 'liwu', 'wanger', 'lisi', 'zhangsan']

    8、扩展(extend)name = ["zhangsan","lisi","wanger","liwu","3","2","1"]
    name_2 =  ["zhang","wang","li"]
    name.extend(name_2)
    print(name)

    9、拷贝(浅copy和深copy)
    浅copy
    # name = ["zhangsan","lisi","wanger","liwu",["beidu","wangyi","sogou"]]
    # name_2 = name.copy()
    # print(name)
    # print(name_2)
    # name[0] = "wangmazi"
    # name[4][0] = "beijing"
    # print(name)
    # print(name_2)
    结果:
    我们先打印name和name_2,发现已经copy完了,两个数据一模一样

         ['zhangsan', 'lisi', 'wanger', 'liwu', ['beidu', 'wangyi', 'sogou']]    
         ['zhangsan', 'lisi', 'wanger', 'liwu', ['beidu', 'wangyi', 'sogou']]

         然后我们在name里面修改zhangsan为wangmazi,发现name_2并没有跟着name变化,说明name_2已经独立为一个新的列表(列表的第一层数据已经完全被复制)。

         但是,我们接着在name里面的的第二层列表修改baidu为beijing,发现name和name_2一模一样,这说明,列表只copy第一层数据,第二层开始就是共享一个数据(只复制           第一层)
         ['wangmazi', 'lisi', 'wanger', 'liwu', ['beijing', 'wangyi', 'sogou']]
         ['zhangsan', 'lisi', 'wanger', 'liwu', ['beijing', 'wangyi', 'sogou']]

       深copy

    # import copy(我们这里引用了copy这个模块,这里面的copy.copy跟列表中的copy一模一样)
    #
    # name = ["zhangsan","lisi","wanger","liwu",["beidu","wangyi","sogou"]]
    # name_2 = copy.deepcopy(name) #注意这里,deepcopy意为深copy,
    # print(name)
    # print(name_2)
    # name[0] = "wangmazi"
    # name[4][0] = "beijing"
    # print(name)
    # print(name_2)

    不废话,看结果

       ['zhangsan', 'lisi', 'wanger', 'liwu', ['beidu', 'wangyi', 'sogou']]
       ['zhangsan', 'lisi', 'wanger', 'liwu', ['beidu', 'wangyi', 'sogou']]


       ['wangmazi', 'lisi', 'wanger', 'liwu', ['beijing', 'wangyi', 'sogou']]
       ['zhangsan', 'lisi', 'wanger', 'liwu', ['beidu', 'wangyi', 'sogou']]

    上面所示标红的字体看出,深copy会将更深层次的数据完完全全的copy一份。


     二、字符串操作:

       1、驼峰字体
    #a  = ("python oldboy edu")
    #print(a.replace("p","ooo"))#更改
    #print(a.title())#更改成驼峰字体

    #oooython oldboy edu
    #Python Oldboy Edu(每个单词的首字母将变成大写)

    2、判断能否成为数字
     #test = "110"
    #print(test.isdigit())#值110能成为数字返回True
    #test_2 = "baidu"
    #print(test_2.isdigit())#但是baidu不会成为数字返回False

    #True
    #False

    3、判断是否符合变量名命名规则
     #test = "Name-1"
    #print(test.isidentifier())#因为横杆在python中的意思为减号,所以不能是变量名的一部分
    #test_2 = "Name_1"
    #print(test_2.isidentifier())
     >>>False
    >>>True

    4、左右补齐
    #print("我爱你中国".center(50,"*"))
    >>>**********************我爱你中国***********************

    三、字典
    字典的简单用法
    name = {} #以两个大括号开始结尾

    字典的特性:
    1、key永远唯一
    2、没有顺序

    1、增加
    info = {
    'stu1101': "baidu",
    'stu1102': "tengxun",
    'stu1103': "alibaba",
    }
    #print(info)#修改增加。
    #info["stu1101"] = "哈哈" #字典里有key是stu1101的话就是修改,如果没有此key的话,就会新增。
    #print(info)
    >>>{'stu1102': 'tengxun', 'stu1101': 'baidu', 'stu1103': 'alibaba'}
    >>>{'stu1102': 'tengxun', 'stu1101': '哈哈', 'stu1103': 'alibaba'}


    2、删除
    #删除
    #del info["stu1101"]

    #删除
    #info.pop("stu1101")

    #随机删除
    #info.popitem()

    3、查找
      #print("stu1101" in info)#标准用法

    #print(info.get("stu1101"))#获取

    #print(info["stu1101"])#获取,但是key不存在就报错,但是get不会,.get不存在的话就返回None
    
    
      通过key和values查找
      #print(info.keys())#只打印key键,取出的值变成了list
    #print(info.values())#z只打印valeus值,取出的值变成了list

    >>>dict_keys(['stu1102', 'stu1101', 'stu1103'])
    >>>dict_values(['tengxun', 'baidu', 'alibaba'])

    4、转换
      #print(info.items())

          >>>{'stu1101': 'baidu', 'stu1102': 'tengxun', 'stu1103': 'alibaba'} #原数据
          >>>dict_items([('stu1101', 'baidu'), ('stu1102', 'tengxun'), ('stu1103', 'alibaba')])#转换后的数据类型

          5、字典的循环 

      #dict循环
    #方法1
    # for key in info:
    # print(key,info[key])

    #方法2
    # for k,v in info.items(): #会先把dict转成list,数据里大时建议不要使用
    # print(k,v)

    6、字典的多级嵌套

    # info = {
    # "北京":{
    # "海淀":["中关村","五道口"]
    # },
    # "上海":{
    # "哈哈":["呵","呵呵"]
    # },
    # }
    # print(info)
    # info["上海"]["哈哈"][0] = "屌丝" #这里注意,字典和列表都可以用中括号[]取值,但是列表的话一般是用下标,这里指出的是直接写元素名称
    # print(info)
    >>>{'上海': {'哈哈': ['呵', '呵呵']}, '北京': {'海淀': ['中关村', '五道口']}}
    >>>{'上海': {'哈哈': ['屌丝', '呵呵']}, '北京': {'海淀': ['中关村', '五道口']}}



    Day1补充:
    1、pyc是什么鬼
    首先,我们知道计算机是无法直接识别高级语言。运行一个程序是,有个"解释器",将语言解释成计算机能识别的语言,语言分为编译型和解释型。
    编译型:
    例如C语言,运行之前需要先编译——解释成计算机能识别的语言(解释一次就OK了)
    解释型:
    例如Ruby,每次运行都需要python解释器将程序解释成机器能识别的语言。往下看,那么问题来了(确认每次都解释一遍吗?)

    每次运行一个python程序后python解释器都需要程序解释成计算机能明白的语言,这个时候程序对应目录就会生成一个.pyc的文件。为什么呢?接着说,这个pyc是干嘛的呢,其实
    一个python程序解释完以后都会生成一个.pyc的文件,下次再运行这个程序就不需要再解释一遍,这样大大提高了速度,但是如果源代码发生的变化怎么办呢,每次运行python程序
    都会自动寻找一遍有没有对应的解释完成的pyc文件,如果有判断pyc是不是最新的,如果不是最新的就再解释一遍,如果是最新的就直接运行。
    这样看来你还好意思说python是一个解释型语言吗?

    
    
     
    
    
     
    
    
     
     
     
  • 相关阅读:
    php 计算时间添加
    微信网页授权
    微信抢红包微信 PHP代码实现
    微信中禁止长按复制的代码
    【转】java内存分配和String类型的深度解析
    【转】java中创建对象的方法
    【转】深入理解Java的接口和抽象类
    【转】Java 字节流与字符流的区别
    【转】Java并发编程:Thread类的使用
    【转】深入理解java异常处理机制
  • 原文地址:https://www.cnblogs.com/lei0213/p/5725501.html
Copyright © 2011-2022 走看看