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是一个解释型语言吗?

    
    
     
    
    
     
    
    
     
     
     
  • 相关阅读:
    Trapping Rain Water
    Construct Binary Tree from Preorder and Inorder Traversal
    Flatten Binary Tree to Linked List
    Permutations II
    Unique Paths II
    Path Sum II
    Unique Binary Search Trees II
    evdev module-----uinput.py
    evdev module-----events.py
    evdev module-----device.py
  • 原文地址:https://www.cnblogs.com/lei0213/p/5725501.html
Copyright © 2011-2022 走看看