大山里的架构师
无论多难,也告诉自己: 哪怕每天进步一点点, 也比原地不动好!

3.4 列表(list)

  1. 格式

    users = ["ji",1,3,"gyhj"]
  2. 公共方法

    • 1.len #计算长度

      users = ["ji",1,3,"gyhj"]
      val = len(users)
      print(val)  # 3
      View Code

       

    • 2.索引 #输出某一个元素

      users = ["ji",1,3,"gyhj"]
      val = users[1]
      print(val)  # 1 
      View Code

       

    • 3.切片 #输出某一段元素

      users = ["ji",1,3,"gyhj"]
      val = users[0:2]
      print(val)  # "ji",1
      View Code

       

    • 4.修改(字符串/数字/布尔除外)

      users = ["ji",1,3,"gyhj"]
      users[2] = 66
      print(users)    # ['ji', 1, 66, 'gyhj']
      View Code

       

    • 5.步长 #选取列表中第几个元素

      users = ["ji",1,3,"gyhj"]
      val = users[0:3:2]
      print(val)  # ['ji', 3]
      View Code

       

    • 6.for循环

      users = ["ji",1,3,"gyhj"]
      for i in users:
      print(i) # 每个元素一次打印
      """
      users = ["ji","asdgfh","tryu","gyhj"]
      for i in users:
       # 第一次循环:i=“ji”
      for e in i:
      print(e) # 打印第一个元素中每个字符
      """
      # 练习题:请通过for循环和数字计数器实现:users = ['李邵奇','利奇航','张三丰','李子森']
       1 qwe
       2 asd
       3 zxc
       4 rty
      # 方式一
      users = ['qwe','asd','zxc','rty']
      count = 1
      for i in users:
          print(count,i)
          count += 1
      # 方式二
      users = ['qwe','asd' ,'zxc','rty']
      users_len = len(users) # 4
      for index in range(0,users_len): # [0,1,2,3]
          print(index,users[index])
      View Code

       

      注意:for和while的应用场景:

      • 有穷尽优先使用for,

      • 无穷尽用while

  3.独有方法

    • 1.append,在列表的最后追加一个元素

      # 示例
      users = ["sdxfc"]
      while True:
       name = input('请输入姓名:')
       users.append(name)
       print(users)   # ['sdxfc', 'sdf']
      View Code

       

    • 2.insert #在指定索引位置进行插入元素

      users = ['qwe','asd','zxc','rty']
      users.insert(1,'zxc')
      print(users)    # ['qwe', 'zxc', 'asd', 'zxc', 'rty']
      View Code

       

    • 3.remove # 删除 注意:()里不加删除内容报错

      .pop # 删除 注意:()里不加数字,默认删除最后一个

      del # 删除 注意:()里不加数字报错

      .clear # 删除列表里所有元素 注意:()里不能加数字

      users = ["ji",1,3,"gyhj"]
      # 方式一
      users.remove('ji')
      print(users)    # [1, 3, 'gyhj']
      # 方式二
      users.pop(1)
      print(users)    #['ji', 3, 'gyhj']
      # 方式三
      del users[1]
      print(users)    #['ji', 3, 'gyhj']
      # 方式四
      users.clear()
      print(users)    # []
      View Code

       

      注意:

      • 字符串本身不能修改或删除【不可变类型】

      • 列表是【可变类型】

    • 4.".reverse" #反转

      v1 = [1,2,3111,32,13]
      print(v1)   # [1, 2, 3111, 32, 13]
      v1.reverse()
      print(v1)   # [13, 32, 3111, 2, 1]
      View Code

       

    • 5."sort" # 排序

      v1 = [1,2,3111,32,13]
      v1.sort(reverse=False) # 从小到大(默认)
      print(v1)   # [11, 13, 22, 32, 3111]
      v1.sort(reverse=True) # 从大到小
      print(v1)   # [3111, 32, 22, 13, 11]
      View Code
       
    • 6.extend() 在列表末尾一次性追加另一个序列中的多个值

      list1 = ['Google', 'Runoob', 'Taobao']
      list2=list(range(5)) # 创建 0-4 的列表
      list1.extend(list2)  # 扩展列表
      print ("扩展后的列表:", list1)
      # 扩展后的列表: ['Google', 'Runoob', 'Taobao', 0, 1, 2, 3, 4]
      View Code

       

  4.总结

    • 1.增:

      • .append / .insert

    • 2.删:

      • .remove / .pop /. clear / del users[2]

    • 3.改:

      • users[3] = "新值"

    • 4.查:

      • 索引/切片

    • 5.列表嵌套

      users = ["a",0,True,[1,2,3,"kjhg"],[4,['sdf','dfg'],5,6]]
      users[0] # a
      users[2] # True
      users[3][2] # 3
      users[3][-1] # "kjhg"
      users[3][-1][-1] # 'g'
      users[3] = 666 # ['a', 0, True, 666, [4, ['sdf', 'dfg'], 5, 6]]

 

3.5 元祖(tuble)

  1.格式

    • users = [11,22,33] # 列表(元素可变)

    • users = (11,22,33) # 元组(元素不可变)

  2、公共方法

    • 1.索引(排除:int/bool)

      users = (11,22,33)
      print(users[0]) # 11
      print(users[-1]) # 33
    • 2.切片(排除:int/bool)

      users = (11,22,33)
      print(users[0:2])
    • 3.步长(排除:int/bool)

      users = (11,22,33,"qwerty")
      print(users[0:2:2])
    • 4.for循环(排除:int/bool)

      users = (11,22,33,"qwerty")
      for item in users:
        print(item)
    • 5.len(排除:int/bool)

      users = (11,22,33,"qwerty")
      print(len(users))

  3、独有方法(无)

  4、 特殊

    • 元组中的元素(儿子)不可被修改/删除

      # 示例一:
      v1 = (11,22,33)
      v1[1] = 999 # 错误
      v1 = 999  # 正确
      # 示例二:可以嵌套
      v1 = (11,22,33,(44,55,66),(11,2,(99,88,),3))
      # 示例三:嵌套
      v2 = [11,22,33,(11,22,33)]
      v2[-1][1] = 99 # 错误
      v2[-1] = 123 # 正确
      # 示例四:嵌套
      v3 = (11,[1,2,3],22,33)
      v3[1] = 666 # 错误
      v3[1][2] = 123
      View Code

       

    • 元组嵌套

      # 错误示例
      v3 = (11,[1,2,3],22,33)
      v3[1] = 666
      v3[1][2] = 123

 

3.6 字典(dict)

  1.字典含义

    • 帮助用户去表示一个事物的信息(事物是有多个属性)。

    • 基本格式

      data = {键:值,键:值,键:值,键:值,键:值,键:值,}
      # 练习题
      userinfo = {'usenrame':'li','password':"xiangmin"}
      user = input('请输入用户:')
      pwd = input('请输入密码:')
      if userinfo['username'] == user and userinfo['password'] == pwd:
          print('登陆成功')
      else:
          print('用户名或密码错误')
      View Code

       

  2.独有功能

    info = {"name":'li','age':18,'gender':'男',}
    • 1.".keys" ,获取字典中所有的键

      for item in info.keys():
      print(item) #循环获取字典中所有的键
    • 2.".values" ,获取字典中所有的值

      for item in info.values():
      print(item) #循环获取字典中所有的键
    • 3.".items" ,获取字典中的所有键值对。

      del info['gender']
      print(info) # {'name': 'li', 'age': 18}
    • 4.".get" ,函数返回指定键的值,如果值不在字典中返回默认值。

      # 示例 一
      dict = {'Name': 'Zara', 'Age': 27}
      print(dict.get('Age'))  # 27
      # 示例 二
      dict = {'Name': 'Zara', 'Age': 27}
      print(dict.get('asd'))  # None
      print(dict.get('asd',"123"))    # 123
      View Code

       

    • 5.".update" ,更新,字典里不存在增加/存在更新

      # 示例 一
      dict = {'Name': 'Runoob', 'Age': 7}
      a = {'Age':9}
      dict.update(a)
      print(dict)     # {'Name': 'Runoob', 'Age': 9}
      # 示例 二
      dict = {'Name': 'Runoob', 'Age': 7}
      dict2 = {'Sex': 'female'}
      dict.update(dict2)
      print("更新字典 dict :- ", dict)
      View Code

       

    • 6."del" ,删除 -#键值对一个整体,要删全删

      ".pop" ,删除

      ".clear",删除(清空所有内容)

      info = {"name":'li','age':18,'gender':'',}
      # 方法一
      del info['gender']
      print(info) # {'name': 'li', 'age': 18}
      # 方法二
      a = info.pop('name')
      print(info) # {'age': 18, 'gender': '男'}
      # 方法三
      info.clear()
      print(info) # {}
      View Code

       

  3.公共功能

    • 1.len

      info = {"name":'li','age':18,'gender':'男',}
      print(len(info)) # 3
    • 2.索引

      info = {"name":'li','age':18,'gender':'男',}
      a = info['name']
      b = info['age']
      print(a) # li
      print(b) # 18
    • 3.for 循环

      info = {"name":'li','age':18,'gender':'',}
      for a in info.keys():
          print(a)    # 循环打印出所有键
      for b in info.values():
          print(b)    # 循环打印出所有值
      for c,d in info.items():
          print(c,d)  # 循环打印出所有键值
      View Code

       

    • 4.修改 #存在就修改/不存在就增加

      # 改值
      info = {"name":'li','age':18,'gender':'',}
      info['age'] = 99
      print(info) # {'name': 'li', 'age': 99, 'gender': '男'}
      # 改键
      # 删除后再增加
      del info['gender']
      print(info) # {'name': 'li', 'age': 18}
      info['asd'] = '123'
      print(info) # {'name': 'li', 'age': 18, 'asd': '123'}
      View Code

       

3.7 集合(set)

  1.集合含义

    • 一个无序的不重复元素序列。

    • 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

    • 空集合:set()

    • 基本格式

      a = {1,2,3,4,5,6}
      parame = {value01,value02,...}
      # 或者
      set(value01,value02,...)

  2.独有方法

    • 1.".add()" ,添加:所添加值没有原值输出、新值增加

      info = {"name",'li','age',18,'gender','',}
      info.add(11)
      print(info)     # {'li', 11, 18, '男', 'gender', 'age', 'name'}
      View Code

       

    • 2.".discard()" ,删除:所删除值没有原值输出、不会报错

      info = {"name",'li','age',18,'gender','',}
      info.discard(18)
      print(info)     #{'男', 'li', 'name', 'age', 'gender'}键
      View Code

       

    • 3.".update()" ,批量添加。

      info = {"name",'li','age',18,'gender','',}
      del info['gender']
      print(info) # {'name': 'li', 'age': 18}
      View Code

       

    • 4.".intersection()" ,交集:生成新值。括号里可以列表、集合、元祖。

      info = {"name",'li','age',18,'gender','',}
      result = info.intersection({1,'li',''})
      print(result)   # {'li', '男'}
      View Code

       

    • 5.".union()" ,并集:生成新值。括号里可以列表、集合、元祖。

      info = {"name",'li','age',18,'gender','',}
      result = info.union({1,'li',''})
      print(result)   # {'gender', 1, '男', 18, 'name', 'age', 'li'}
      View Code

       

    • 6.".difference()" ,差集:生成新值。括号里可以列表、集合、元祖。

      info = {"name",'li','age',18,'gender','',}
      result = info.difference({1,'li',''})
      print(result)   # {'name', 18, 'age', 'gender'}
      View Code

       

    • 7.".symmetric_difference()" ,对称差集:生成新值。括号里可以列表、集合、元祖。

      info = {"name",'li','age',18,'gender','',}
      result = info.symmetric_difference({1,'li',''})
      print(result)   # {1, 'name', 'gender', 18, 'age'}
      View Code

       

  3.公共方法

    • len

      info = {"name",'li','age',18,'gender','男',}
      print(len(info)) # 6
    • for 循环

      info = {"name",'li','age',18,'gender','男',}
      for a in info:
         print(a) # 循环打印出所有元素

  4.特殊情况

    • 1、集合与列表取交集

      info = {"name",'li','age',18,'gender','男',}
      result = info.intersection([1,'li','男'])
      print(result) # {'li', '男'} # {'li', '男'}
    • 2.集合中出现0与False(谁在前输出谁)

      info = {0, 2, 3, 4, False, "国风", None, (1, 2, 3)}
      print(info) # {0, '国风', 2, 3, 4, None, (1, 2, 3)}
    • 3.字典中1与Ture同时为键(谁在前把后面值赋给前面的键)

      info = {
          1:'alex',
          True:'oldboy'
      }
      print(info)     # {1: 'oldboy'}
      View Code

       

  5.总结

    1. 列表/字典/集合 -> 不能放在集合中+不能作为字典的key(unhashable)

    2. hash(哈希):因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。

 

原文链接:https://www.danpinsuiyue.com/2535343987.html

posted on 2019-07-11 21:24  大山里的架构师  阅读(358)  评论(0编辑  收藏  举报