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

2018-06-25  本文已影响0人  SlashLife

一、元祖

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

切片
  print(tuple1[:3])  
遍历
  for item in tuple1:
      print(item)
长度
  for index in range(len(tuple1)):
      print(tuple1[index])

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

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

二、字典

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

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

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

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

  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)

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

  print(dict1['age'])

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

  print(dict1['abc'])  报错:KeyError: 'abc'

获取字典中,不确定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)

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

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

  for key, value in dict1.items():
      print(key, value)

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

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

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

  for key in dict5:
      dict5[key] *= 3
  print(dict5)

通过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}
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]}

三、补充

字典.keys():获取字典中所有的key,结果是一个列表
  print(dict1.keys())    # dict_keys(['a', 'b', 'c'])
字典.values():获取字典中所有的值,结果是一个列表
  print(dict1.values())    # dict_values([1, 2, 3])
字典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'}

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

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

四、集合

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

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

将字符串转换成集合
  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

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

  set1 = set('12345678cvbh')
  for item in set1:
      print(item)
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'}

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

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

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

集合1 >= 集合2:判断集合1是否包含集合2,结果是布尔值
  set1 = set('abcdef')
  set2 = set('abc')
  print(set1 >= set2)  # True
集合1 <= 集合2:判断集合2是否包含集合1,结果是布尔值
  print(set1 <= set2)
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'}

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

上一篇 下一篇

猜你喜欢

热点阅读