python知识点5

知识点5-字典,元组集合

需求:age1 = 10
      age2 = 20
      age3 = 30
      age4 = 40
....
     [10,20,30,40,50]


1 字典:


1.1 概述:字典是以key-value(键值对)的形式来存储数据的
          查找速度快


    key的特点:
       key 1:key是唯一的


           2:key需要是不可变类型


           3:注意 key是无序的


           4 可变类型:列表,字典


           5 不可变类型:如 数字,字符串


1.2 格式:{key1:value,key2:value,...}


1.3 描述:字典的key与value是以冒号:连接,


          key与value组成字典的一个元素,


          元素与元素之间用逗号,连接


          字典使用{}包裹


1.4创建
1.4.1 创建一个空的字典


dict1 = {}
print(dict1)
print(type(dict1)


1.4.2 创建与i个有多个值的字典


dict2 = {"name1":"小灰灰","name2":"刘德华","name3":"吴彦祖","name4":"三胖胖"}


print(dict2)


其中key不能重复,只会保留一个key对应的值,且保留的是后面出现的那个


dict2 = {"name1":"小灰灰","name1":"刘德华","name3":"吴彦祖","name4":"三胖胖"}




注意:字典的key需要不可变的类型


dict2 = {"name1":"小灰灰","[1,2,3]":"刘德华","name3":"吴彦祖","name4":"三胖胖"}


字典是无序的
print(dict2)




1.5 增删改查
1.5.1



注意:字典是无序的,不可以用索引来获取值


name = dict2[2]


1.5.2
 
方式一:字典通过key值来获取值value


格式:字典名[key]


name = dict2["name4"]


注意:当key不存在时,会抛出异常,使程序挂掉


name = dict2["age"]


方式二:使用get方式获取值,


当key不存在时,不会抛出异常,返回None


参数2 用来设置默认值,当key不存在时,就返回该默认值


name = dict2.get("age")
name = dict2.get("gender",男)
print(name)






1.5.2 增加


dict3 = {"name1":"小灰灰","[1,2,3]":"刘德华","name3":"吴彦祖","name4":"三胖胖"}


添加
dict3["name5"] = "李小璐"




修改
dict3["name2"] = "文章"


print(dict3)


注意:


     格式:  字典名[key] = 值


     注意:如果key值已经存在,则表示的是修改的key对应的value的值
           如果key值不存在,则表示是向该字典中添加一个新的键值对


1.5.3 删除


     根据key来删除一个值,会返回删除的值
     如果key不存在,且没有设置default(默认,缺省)值,会抛出异常
                      如果设置,则返回默认值


name = dict3.pop("name8","哈哈哈")


clear


建议 先判断key是否存在,再进行数据操作


if "name2" in dict3:
print("存在")
else:
print("不存在")


print(name)






1.6 字典的常见操作   5种字典的遍历


dict4 = {"name1":"小灰灰","[1,2,3]":"刘德华","name3":"吴彦祖","name4":"三胖胖"}


遍历字典,可以取到每一位key


第一种方式:


for key in dact4:
print(key)
print("key = %s,value = %s"%(key,dict4[key]))


for i in range(len(dict4)):
print(i)




第二种方式:


for index,key in enumerate(dict4):
print(index)
print(key)
print("key = %s,value = %s"%(key,dict[key]))


第三种方式:


keys = dict4.keys()
print(keys)


keys 是获取所有元素的key值


for key in dict4.keys():
print("key = %s,value = %s"%(key,dict[key]))




第四种方式


value是获取所有元素的value值
for value in dict4.values()
print(value)




第五种方式


items是获取所有的key-value键值对


for key,value in dict.items()
print("key = %s,value = %s"%(key,value))




与list比较:


     dict字典:字典查找,插入的速度快,随着数据量增加,对速度没有太大影响
               需要消耗的内存较大,消耗内存


     list列表:列表查找,插入的速度慢,随着数据量的增加,对速度影响较大
               列表需要内存较小,节约内存
                 




copy操作,复制


dict5 = {"name1":"小灰灰","[1,2,3]":"刘德华","name3":"吴彦祖","name4":"三胖胖"}


print(dict5)
dict6 = dict5
dict6["name1"] = "美味可口的小灰灰"


print(dict6)
print(dict5)






dict7 = {"name1":"小灰灰","[1,2,3]":"刘德华","name3":"吴彦祖","name4":"三胖胖"}


print(dict7)


dict8 = dict7.copy()
dict8["name1"] = "美味可口的小灰灰"


print(dict8)
print(dict7)










二,元组 tuple


特点:1 与list类似


      2 不可变类型
 
      3 元组使用的是()
格式:


     (元素1,元素2,元素3....)
描述:


     用()包裹起来的多个元素组成元组,每个元素之间用逗号隔开
创建:


     创建一个空的       tuple = ()
   
     注意:创建只有一个元素的元组时,需要在该元素后面加个逗号


     创建只有一个元素   tuple1 = (12,)


                        print(tuple1)
                        print(type(tuple1))
     创建有多个元素的元组


          tuple2 = (12,34,8,67,12,89)


      #元组可以存放不同类型的元素


          tuple3 = (12,34,8,67,12,"123")
          print(tuple3)
查:


    元组可以根据索引查询数据


    tuple4 = ("李小璐","马蓉","白百何","文章","金三胖胖")
    name = tuple[1]


    注意:索引可以是负数
    注意脚标越界异常


    可以根据值查到索引
     
     index = tuple4.index("金三胖胖")
     print(index)
     print(name)




不能增-删-改


tuple5 = (12,34,8,67,12,89)
不能修改
#tuple5[0] = 100






tuple5 = (12,[23,34,45],8,67,12,89)
#tuple6[1] = 100
tuple6[1][1] = 100
print(tuple6)






元组的常用操作


    拼接
    
    tuple7 = (1,2,3)
    tuple8 = (2,3,4,5,6)
    tuple9 = tuple7 + tuple8
    print(tuple9)


     乘法操作


      tuple10 = tuple * 3
      print(tuple10)




      元组的截取


      tuple11 = (0,1,2,3,4,5,6,7,8,9)
      tuple12 = tuple11[3:]
      tuple12 = [::-1]
      print(tuple12)




      判断元素是否在元组中
      if 8 in tuple11:
      print("存在")


       求最大值最小值,max函数可以传元组
       maxNumber = max(12,23,89,12,-100,87)
       print(maxNumber)




       求最小值
       minNumber = min(12,23,89,12,-100,87)
       print(minNumber)






二维元组




tuple13 = ((1,2,3),(3,4,5),(6,7,8))
# tuple14 = ([1,2,3],(3,4,5),(6,7,8))
num = tuple13[2][2]
print(num)


 三维元组
tuple15 = (((1,2,3),(3,4,5),(6,7,8)),((1,2,3),(3,4,5),(6,7,8)),((1,2,3),(3,4,5),(6,7,8)))






遍历


tuple16 = (12,23,89,12,-100,87)


for i in tuple16:
print(i)


for i in range(len(tuple16)):
print(tuple[i])


for index,value in enumerate(tuple16):
#print(index)
print(value)






三 set集合


   set集合:是一个无序的,不可重复的集合
            相当于字典dict的key,但是没有value


   创建一个空的set,set一般是通过set函数来创建的
 
       set1 = set()


       注意:{}空的表示的是字典
       如果{}中的元素是key:value的形式,表示的是字典,
              直接是key的形式,表示的是set


       set1 = {}
       set1 = {12:12}


       set1 = ()
       print(set1)


       print(type(set1))


   通过set创建时,需要用list列表,字典dict,元组tuple,字符串str
               来转换


   通过列表来转换


        set是无序的
    
        set2 = set([12,23,34,45,56])
         
        set的元素不可重复


        set2 = set([12,23,34,45,56,12,34])
        print(set2)


        print(type(set2))




      list1 = [12,23,34,45,56,12,34]
      set3 = set(list1)
      将set转换为list
      list2 = list(set3)
      print(list2)




    通过字典来转换---会将字典中的key取出来作为元素
  
     dict1 = {"李小璐":30,"马蓉":40,"文章":35,"小灰灰":23}
     set4 = set(dict1)
     print(set4)


    通过元组来转换


     tuple1 = ("贾乃亮","王宝强","马伊俐","凤姐")
     set5 = set(tuple1)




     通过字符串来转换
      
      str1 = "wen is a good man"
      set5 = set(str1)
      print(set5)


   set6 = set(("贾乃亮","王宝强","马伊俐","凤姐"))


查 遍历


   for i in set6:
    print(i)


   for index,key in enumerate(set6):
    print(index)
    print(key)


增   add表示增加1个,update表示增加多个
  
   set6.add("陈冠希")   表示只增加一个元素
   set6.add("陈冠")


   set6.update(["小君君","小灰灰"])
   print(set6)







    set6.pop()  只随机删除一个元素


    remove可以删除指定的元素


    set6.remove("凤姐")
    print(set6)




改 --- 不能改




交集,并集,差集


     set7 = set([12,23,34,45])
     set8 = set([34,45,56,67])


     交集
     set9 = set7 & set8
     print(set9)


     并集
     set10 = set7 | set8
     print(set10)


     差集
     set11 = set7 - set8
     print(set11)








四 list的补充


   list1 = [78,23,45,12,78,-90]


   remove表示会删除找到的第一个元素
   list1.remove(78)


   获取元素在列表中的个数
  
       count1 = list1.count(78)
       print(count1)
 
       for i in range(count1):
        list1.remove(78)
       print(list1)




最大值


     maxNum = max(list1)
     print(maxNum)


最小值


     minNum = min(list1)
     print(minNum)


排序 


升序


sorted会生成一个新的排序后的列表,默认升序
list2 = sorted(list1)


sort()将原列表进行排序(默认是升序)


list1.sort()
print(list1)




降序


reverse表示是否反转


list2 = sorted(list1,reverse = True)
print(list2)




list1.sort(reverse=True)


将列表反转


list1.reverse()
print(list1)






五,copy


例子:


list1 = [0,1,2,3,4,5]
liast2 = list1
list2[0] = 100
print[list1]
print[list2]




例子:


list1 = [0,1,2,3,4,5]
list2 = list1.copy()
list2[0] = 100
print[list1]
print[list2]






例子:
list1 = [[7,8,9],1,2,3,4,5]
list2 = [[7,8,9],1,2,3,4,5]
list2 = list1.copy()
list2[0] = 100
list2[0][0] = 100
print(list1)
print(list2)




import copy


list1 = [[7,8,9],1,2,3,4,5]
#list2 = [[7,8,9],1,2]3,4,5]
list2 = copy.deepcopy(list1)
list2[0] = 100
list2[0][0] = 100
print(list1)
print(list2)
















































































































































        
































































































































































































































































 













































































































































































































































































































































































































































































































































































猜你喜欢

转载自blog.csdn.net/jiangwei1102/article/details/79055572