美文网首页
2018年6月20日【python学习笔记】

2018年6月20日【python学习笔记】

作者: SlashLife | 来源:发表于2018-06-25 08:39 被阅读0次

    一、元祖

    元祖(tuple)就是不可变的列表
    列表中除了增加、修改和删除相关的操作,其他的都适用于元祖
    什么时候用?就是存到容器里的数据,不能被修改的时候使用
    例如:星期几的对应的值

    • 1.声明元祖

      tuple1 = (1, 2, 3, 4, 'a', True)
      print(tuple1)
      
    • 2.元祖的查

      print(tuple1[0])
      print(tuple1[-1])
      
    切片
      print(tuple1[:3])  
    
    遍历
      for item in tuple1:
          print(item)
    
    长度
      for index in range(len(tuple1)):
          print(tuple1[index])
    
    • 3. + 和 *

      print((1, 2, 3) + ('a', 'b', 'c'))
      print((1, 'a') * 3)
      
    • 4.in, not in

      a = 10
      print(a in (10, 2, 9, 9))
      print(a not in (10, 2, 9, 9))
      

    练习:输入1~7的数字,对应输出是星期几,例如:输入1,就输出星期几。

      tuple1 = ('星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日')
      while True:
          input_value = int(input('请输入1~7'))
          print(tuple1[input_value-1])
    

    二、字典

    字典是一个容器类的数据类型,以键值对(key:value)的形式存储数据

    键值对:键:值的形式存在。
    值:可以是任何类型的数据;
    键:理论上只能是不可变的数据类型的数据,实际开发中一般用字符串作为key(键)

    字典是可变的(说明可以增、删、改、查),但是是无序的(不能用下标来访问元素)

    • 1.声明字典(dict):

    声明了一个字典对象,有两个键值对

      dict1 = {'name': '罗昊', 'age': 18}
      dict2 = {'score': 100, 10: 'aaa', (1, 3): [10, 23]}
      print(dict2)
    

    注意:

      dict3 = {[10, 12]: 'abc'}  报错:可变的数据不能作为字典的key
      print(dict3)
    

    声明一个字典,存储小明的姓名、年龄、成绩、颜值

      dict1 = {'name': '小明', 'age': 18, 'score': '优', 'face': 80}
      print(dict1)
    
    • 2.查

    • a.获取单个元素的值

    通过key取获取值:字典名[key值]

      print(dict1['age'])
    

    注意:使用字典名[key]的形式去获取字典中的元素时。
    key值必须是在字典中存在的,否则报错

      print(dict1['abc'])  报错:KeyError: 'abc'
    
    • b.通过get方法获取值:字典名.get(key值)

    获取字典中,不确定key对应键值对的值是否存在时,就用get获取

      print(dict1.get('name'))
    
    None:python中的一个特殊值,表示没有,类似c语言中的NULL
      print(dict1.get('abc'))   # 结果是None
    

    获取字典中的'grade'对应的值,如果grade不存在就打印不存在,否则直接打印对应的值

      dict1 = {'name': '小明', 'age': 18, 'score': '优', 'face': 80}
      value = dict1.get('grade')
      if None == value:
          print('不存在')
      else:
          print(value)
    
    • c.字典中的遍历元素(遍历字典)

      for x in dict1:
          print(x)    # 拿的是字典中所有的键
      
      for key in dict1:
          print(key, dict1[key])   # 拿的是元素
      

      print(dict1.items())   #dict_items([('name', '小明'), ('age', 18), ('score', '优'), ('face', 80)])
    

    因为在获取键值对前需要一些转换的操作,对CPU的消耗很大,实际开发不建议用

      for key, value in dict1.items():
          print(key, value)
    
    • 2.修改

    通过key去拿到对应的元素,然后重新赋值

      dict5 = {'a': 1, 'b': 2, 'c': 3}
      dict5['a'] = 10
        print(dict5)
    

    练习:将上面的字典中所有的值变为原来的三倍

      for key in dict5:
          dict5[key] *= 3
      print(dict5)
    
    • 3.增加

    通过key取值,然后赋值
    (如果这个key不存在,就是添加。如果存在,就是修改key对应的值)
    增加键值对:'d':4

      dict5['d'] = 4
      print(dict5)
    
      dict6 = {}
      dict6['name'] = '张三'
      dict6['color'] = 'red'
      dict6['color'] = 'green'
      print(dict6)    # {'name': '张三', 'color': 'green'}
    
    注意:字典里的key是唯一的
      dict7 = {'a': 1, 'b': 2, 'a': 10}
      print(dict7)     # {'a': 10, 'b': 2}
    
    • 4.删除(删除的是键值对)

    a.del语句

    格式:del 字典[key]

      dict1 = {'a': 10, 'b': 10.3, 'c': False, 'd': [1, 2, 3]}
      del dict1['b']
      print(dict1)    # {'a': 10, 'c': False, 'd': [1, 2, 3]}
    
    b.pop方法

    格式:字典.pop(key)

      dict1 = {'a': 10, 'b': 10.3, 'c': False, 'd': [1, 2, 3]}
      result = dict1.pop('a')
      print(dict1, result)   # {'b': 10.3, 'c': False, 'd': [1, 2, 3]} 10
    
    popitem方法:随机删除(取出)一个元素
      dict1 = {'a': 10, 'b': 10.3, 'c': False, 'd': [1, 2, 3]}
      dict1.popitem()
      print(dict1)    # {'a': 10, 'b': 10.3, 'c': False}
    

    练习:删除所有值为字符串的元素

      dict1 = {'a': 10, 'str': 'string', 'b': 10.3, 'c': False, 'd': [1, 2, 3]}
      for key in dict1.copy():
         value = dict1[key]   # 取键值对的值
          if isinstance(value, str):  # 判断是否是字符串
              dict1.pop(key)    # 移除key对应的键值对
      print(dict1)    # {'a': 10, 'b': 10.3, 'c': False, 'd': [1, 2, 3]}
    

    三、补充

    • 1.keys和values方法

      dict1 = {'a': 1, 'b': 2, 'c': 3}
      print(dict1)   # {'a': 1, 'b': 2, 'c': 3}
      
    字典.keys():获取字典中所有的key,结果是一个列表
      print(dict1.keys())    # dict_keys(['a', 'b', 'c'])
    
    字典.values():获取字典中所有的值,结果是一个列表
      print(dict1.values())    # dict_values([1, 2, 3])
    
    • 2.update()

    字典1.update(字典2):用字典2中的元素去更新字典1中的元素

    如果字典2中的键值对字典1中没有,就直接添加;如果有的话就修改。

      dict1.update({'d': 123, 'e': 'hhh', 'a': 100})
      print(dict1)    # {'a': 100, 'b': 2, 'c': 3, 'd': 123, 'e': 'hhh'}
    
    • 3.in 和 not in

    判断字典中是否有指定的key

      print('a' in dict1)   # True
      print(100 in dict1)   # False
    

    四、集合

    集合是一种容器类型,并且是无序的,元素的值是唯一的(不能重复),是可变的
    是通过{}来储存元素,多个元素之间用逗号隔开。

    • 1.声明集合(set)

      set1 = {1, 2, 3, 4, 1, 10}
      print(set1)    # {1, 2, 3, 4, 10}
      

    将其他数据类型转换成集合时,有自带去重功能

    将字符串转换成集合
      set2 = set('abcdefadkgkfl')
        print(set2)    # {'c', 'd', 'k', 'e', 'b', 'g', 'f', 'l', 'a'}
    
    将列表转换成集合
      set3 = set([1, 2, 3, 4, 5, 6])
      print(set3)   # {1, 2, 3, 4, 5, 6}
    
    将字典转换成集合(是将字典的key取出来作为集合的元素)
      set4 = set({'a': 1, 'b': 2})
      print(set4)   # {'a', 'b'}
    

    练习:将字符串str1 = 'ajfdkcnckdsc'去重

      str1 = 'ajfdkcnckdsc'
      # list1 = list(str1)   # 将字符串转换成列表
      # set1 = set(list1)    # 将列表转换成集合
      # list1 = list1(set1)  # 将集合转换成列表
      set1 = set(str1)
      str1 = ''
      for item in set1:
          str1 += item
      print(str1)   # kdjsnfac
    
    • 2.查

    不能单独的获取某一个元素,只能通过遍历的方式去获取每一个元素

      set1 = set('12345678cvbh')
      for item in set1:
          print(item)
    
    • 3.增加

    a.集合1.update(集合2):将集合2中的元素添加到集合1中,自带去重
      set1 = set('123456')
      set2 = set('abcd1')
      set1.update(set2)
      print(set1)  # {'2', '6', 'd', '4', '5', 'c', '1', 'b', '3', 'a'}
    
    b.add

    集合.add(元素):将指定的元素添加到指定的集合中

      set1.add('aaa')
      print(set1)  # {'3', '1', 'd', 'a', '4', '5', 'aaa', '6', 'b', '2', 'c'}
    
    • 4.删除

    集合.remove(元素):将指定的元素从集合中删除

      set1.remove('1')
      print(set1)   # {'2', 'a', 'aaa', 'd', '6', '3', '4', '5', 'c', 'b'}
    
    • 5.判断包含关系:>=、<=

    python中的集合除了拥有作为容器相关操作以外,还拥有数学中集合的相关操作

    集合1 >= 集合2:判断集合1是否包含集合2,结果是布尔值
      set1 = set('abcdef')
      set2 = set('abc')
      print(set1 >= set2)  # True
    
    集合1 <= 集合2:判断集合2是否包含集合1,结果是布尔值
      print(set1 <= set2)
    
    • 6. |, &, -, ^

      set1 = set('123456')
      set2 = set('456789')
      
    a. |:求集合的并集
      print(set1 | set2)  # {'3', '5', '7', '8', '2', '1', '6', '9', '4'}
    
    b. &:求交集,求set1和set2的公共部分
      print(set1 & set2)  # {'5', '4', '6'}
    
    c. -:求的差集,在set1中,但是不在set2中的所有的元素
      print(set1 - set2)  # {'2', '3', '1'}
    
    d. ^:获取set1和set2 中,除了公共部分以外的所有元素
      print(set1 ^ set2)   # {'1', '8', '7', '3', '2', '9'}
    
    • 7. copy:将set1中所有元素取出来,创建一个新的集合

      print(set1.copy())   # {'2', '4', '3', '1', '5', '6'}
      

    什么时候用集合:功能涉及到数学集合相关的操作的时候,就要想到用集合

    相关文章

      网友评论

          本文标题:2018年6月20日【python学习笔记】

          本文链接:https://www.haomeiwen.com/subject/qjatyftx.html