Python第五课:列表和字典

一、列表

1. 什么是列表
  • 一个列表需要使用中括号[]将所有数据框起来,里面中的每一个数据叫做“元素”, 元素与元素之间使用逗号隔开。
list=['李雷','韩梅梅',180,3.5]
print(list)
  • 各种类型的数据(字符串、整数、浮点数)都能放在列表里面
2. 从列表中提取单个元素
  • 列表中的各个元素,是有序排列的,每一个元素都有自己的位置标号,这个位置标号就叫做下标。
  • 列表中的元素从左往右进行排列, 它们对应的下标从0,1,2开始逐渐递增。
  • 所以,我们可以通过列表名搭配下标方式来提取列表中的元素,读取元素中的内容。
# 提取元素'大黄蜂'

transformers = ['擎天柱','大黄蜂','救护车']
print(transformers[1])
3. 从列表中提取多个元素
# 请看示例

transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛']

print(transformers[:])

print(transformers[2:])

print(transformers[:2])

print(transformers[1:3])

print(transformers[2:4])

# 每次打印出来的内容都是不相同的。
  • 通过冒号来截取列表元素的操作叫切片,就是将列表的某个片段,通过切割下标的方式来提取多个元素。

  • 提取原则:冒号左边空,就要从下标为0的元素开始取。右边空,就要取到列表的最后一个元素。后半句:冒号左边数字对应的元素要拿,右边的不动

    点击关闭图片

    # 提取lily和lucy
    
    names = ['李雷','lily','lucy','韩梅梅']
    print(names[1:3])
    
4. 给列表添加/删除元素
  • 用append()函数给列表增加元素。append是 附加,追加,增加,增补的意思。

    transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛']
    
    transformers.append('萨克巨人')
    
    print(transformers)
    
  • 用del函数的语法是del 列表名[元素的下标],给列表删除元素

    transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛']
    
    del transformers[2]
    
    print(transformers)
    
5. 小结

点击关闭图片

  • 思考:
    • 添加多个元素怎么操作?
    • 在制定位置添加元素怎么操作?
    • 删除多个元素怎么操作?
6. 列表的其他功能
1.列表拼接
      list1 = [1,2,3,4]
      list2 = [6,7,8,9]
      
      print(list1+list2)
      
      a = ['杨过','小龙女','神雕']
      b = ['尹志平','黄蓉','郭靖']
      
      print(a+b)
      ```
2.添加元素
  • list.append(new)函数,添加新元素到列表中去,只能添加一个,默认添加在列表末尾
       a = ['杨过','小龙女','神雕']
       a .append('尹志平')
       
       print(a)
  • list.insert(index,new)函数,只能添加一个元素,可指定在具体的位置添加
 a = ['杨过','小龙女','神雕']
 a .insert(-1,'尹志平')
       
 print(a)
3.追加序列的值。
  • list.extend()函数:在列表的末尾追加另一个列表的值

    a = ['杨过','小龙女','神雕']
    a.extend(['尹志平','洪七公'])
    
    print(a)
    
    list1 = [1,2,3,4]
    list2 = [6,7,8,9]
    list1.extend(list2)
    print(list1)
    
4.删除元素
  • del list[index]列表索引的函数:如前所述

  • list.pop(index)函数:返回被删除的元素,默认删除最后一个元素;可指定删除具体位置的元素并返回。可将返回的值赋值给新的变量

       >>> list = [1,2,3,4,5]
       >>> list.pop()
       5
       >>> print(list)
       [1, 2, 3, 4]
       
       
       >>> list = [1,2,3,4,5,6,]
       >>> list.pop(2)
       3
       >>> print(list)
       [1, 2, 4, 5, 6]
       >>> 
       
       >>> name = ['杨过','小龙女','李靖','哪吒']		    
       >>> print(name)	    
       ['杨过', '小龙女', '李靖', '哪吒']
       >>> mc = name.pop(2)	    
       >>> print(name)	    
       ['杨过', '小龙女', '哪吒']
       >>> print(mc)	    
       李靖
       >>> 
       mylist = [20, 34, 56, 47, 58, 69,20,40,34,20]
       option = int(input('请输入想要删除的数字:'))
       for counter,x in enumerate(mylist):
   			if x == option:
       		num = mylist.pop(counter)
       print(mylist)
       print(num)

      请输入想要删除的数字:20
      [34, 56, 47, 58, 69, 40, 34]
      20


  • list.remove(’‘元素’’):找到指定元素,再删除,但若列表中有重复的元素,只能删除列表中的第一个元素;若要删除列表中所有重复的元素,可采用count()和for循环进行操作。

       >>> name = ['lily','lucy']
       >>> name.remove('lily')
       >>> print(name)
       ['lucy']
    
       >>> num=[20,40,56,67,78,20,30,20]
       >>> num.remove(20)
       >>> print(num)
       [40, 56, 67, 78, 20, 30, 20]
      
       >>> num = [20,30,40,30,20,20,50,20,34,20]
       >>> for i in range(num.count(20)):
       			 num.remove(20)
    		   print(num)
    	[30, 40, 30, 50, 34]
    
  • list.clear(llist):清空列表。与del不同的地方在于,删除del删除整个列表后,系统提示name is not difined

        >>> list1 = [1,2,3,4]
        >>> list1.clear()
        >>> print(list1)
        []
        >>> 
5. 反向输出
  • list.reserve():将列表元素进行反向排列

         >>> name = ['小龙女','杨过','天山童姥','李莫愁']
         >>> name.reverse()
         >>> print(name)
         ['李莫愁', '天山童姥', '杨过', '小龙女']
         >>> 
         
         
         >>> num = [1,2,3,4,5,6,]
         >>> num.reverse()
         >>> print(num)
         [6, 5, 4, 3, 2, 1]
         >>> 
    
    6.统计次数
    • list.count(元素):统计列表中指定参数的出现次数
         >>> num = [1,2,3,2,2,3,3,4,2,3,5,3]
         >>> num.count(2)
         4
         >>> 
         
         >>> name = ['杨过','小龙女','小龙女','杨过','洪七公','郭靖','美国队长']
         >>> name.count('杨过')
         2
         >>> 
    
    7.列表排序
    • list.sort(reverse=True/False)。将列表按照ASCII表来 排序,reverse=True是降序
    • 一般情况下,python将大写字母优先于小写字母处理,若要避免这种情况发生,将sort()变更为sort(key=str.lower)即可
        >>> list = [1,2,5,7,10,2,54,34,76,34]
        >>> list.sort()
        >>> print(list)
        [1, 2, 2, 5, 7, 10, 34, 34, 54, 76]
        
        >>> list.sort(reverse=True)
        >>> print(list)
        [76, 54, 34, 34, 10, 7, 5, 2, 2, 1]
        
        >>> list.sort(reverse=False)
        >>> print(list)
        [1, 2, 2, 5, 7, 10, 34, 34, 54, 76]
        >>> 	       
        
        >>> name = ['杨过','小龙女','小龙女','杨过','洪七公','郭靖','美国队长']
        >>> name.sort()
        >>> print(name)
        ['小龙女', '小龙女', '杨过', '杨过', '洪七公', '美国队长', '郭靖']
        >>> name.sort(reverse=True)
        >>> print(name)
        ['郭靖', '美国队长', '洪七公', '杨过', '杨过', '小龙女', '小龙女']
        >>> 
        
        >>> name=['My','is','Bill','name']
     	>>> name.sort()
     	>>> print(name)
     	['Bill', 'My', 'is', 'name']
    
      >>> name=['My','is','Bill','name']
      >>> name.sort(key=str.lower)
      >>> print(name)
        ['Bill', 'is', 'My', 'name']
    
     # 对大小写不敏感进行倒序排列
     >>> name=['My','is','Bill','name']
     >>> name.sort(key=str.lower,reverse=True)
     >>> print(name)
     ['name', 'My', 'is', 'Bill']
     >>> 
    
    • sorted(list):临时排序
          >>> b = ['tom','david','jack','monika']
          		    
          >>> sorted(b) #按照字母临时排序
          		    
          ['david', 'jack', 'monika', 'tom']
          >>> print(b) #打印原有列表的顺序
          		    
          ['tom', 'david', 'jack', 'monika']
          >>> print(sorted(b)) #打印临时排序
          		    
          ['david', 'jack', 'monika', 'tom']
          >>> 
    
    8.查询所有元素
    • list.[::]:查询显示该列表所有元素。注意:一个冒号也可以查询到所有元素。
        >>> name = ['杨过','小龙女','小龙女','杨过','洪七公','郭靖','美国队长']
        >>> name[::]
        ['杨过', '小龙女', '小龙女', '杨过', '洪七公', '郭靖', '美国队长']
        >>> 
    
    9.list.inex(元素):返回索引值(下标)
     names = ['Lihua', 'Rain', 'Jack', '秀秀', 'Peiqi', 'Blue', 'Black']
     >>> print(names.index('Blue'))
     5
     >>> 
    
    10.修改元素
    • list[list.index(旧元素)]=新元素:替换列表中的元素
      >>> name = ['lucy','lily','tom','david','alex']
      >>> name[name.index('lily')]='monika'
      >>> print(name)
      ['lucy', 'monika', 'tom', 'david', 'alex']
      >>> 
      
      >>> name = ['杨过','小龙女','李靖','哪吒']
      >>> name[name.index('哪吒')]='托塔李天王'		    
      >>> print(name)		    
      ['杨过', '小龙女', '李靖', '托塔李天王']
      >>> 
    
    • list[下标]=新元素
      >>> name = ['杨过','小龙女','李靖','哪吒']
      >>> name[3]='托塔李天王'
      >>> print(name)
      ['杨过', '小龙女', '李靖', '托塔李天王']
      >>> 
    
11.实时改变列表元素
  • 可采取另外一个空列表的形式,将改变后的元素添加进空列表中
mylist = [20, 60, 500, 1200, 5000]
list=[]
for x in mylist:
    list.append(x*3)
print(list)
# 输出结果为:[60, 180, 1500, 3600, 15000]
  • 采用enumerate函数,返回列表的元素和下标
# enumerate的用法举例,可将列表、字符串、元祖返回下标和元素
# 同时可用start=x 设定起始返回的位置
>>> num=['lucy','lily','tom','david']
>>> print(list(enumerate(num)))
[(0, 'lucy'), (1, 'lily'), (2, 'tom'), (3, 'david')]

>>> name='黄晓明'
>>> print(list(enumerate(name)))
[(0, '黄'), (1, '晓'), (2, '明')]

>>> name=('黄晓明','杨天宝','宋小宝')
>>> print(list(enumerate(name)))
[(0, '黄晓明'), (1, '杨天宝'), (2, '宋小宝')]

>>> name=('黄晓明','杨天宝','宋小宝')
>>> print(list(enumerate(name,start=1)))
[(1, '黄晓明'), (2, '杨天宝'), (3, '宋小宝')]

# 使用enumerate函数实时批量修改列表元素
>>> mylist = [20,34,56,47,89,78]
>>> for counter,x in enumerate(mylist):
	print('counter is',counter)
	print('x is',x)
	mylist[counter]=x
print(mylist)

# 输出结果为:
# counter is 0
# x is 20
# counter is 1
# x is 34
# counter is 2
# x is 56
# counter is 3
# x is 47
# counter is 4
# x is 89
# counter is 5
# x is 78
# [20, 34, 56, 47, 89, 78]

二、字典

1. 什么是字典
  • 字典和列表很相似,都有名称、赋值号、逗号做间隔,逗号间隔的还叫元素。

    而不一样的是,字典每个元素由键与值组成,而列表不是,字典外层使用大括号{}, 列表外层使用中括号[ ]。

    transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛']
    
    fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80  }
    
  • 字典的元素由键与值组成,组成形式 键:值,冒号还是英文的冒号。‘擎天柱’: 95, 我们把’擎天柱’称为键,把95称为值。

  • 这样键:值的形式,我们统称为键值对。

  • 还可以使用len()函数来得到字典或列表的长度。len()函数括号里放字典或列表的名字。

    transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛']
    
    fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80  }
    
    print(len(transformers))
    
    print(len(fc))
    
  • 需要注意的是:字典中的键是唯一的,值是可以重复的。也就是说,字典里只能有一个‘擎天柱’的键,但是却可以有两个‘80’的值。

2. 从字典中提取元素
  • 和列表相似,使用[ ],但是字典没有下标,只能通过键名提取,也就是字典名[键]。

    fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80  }
    
    print(fc['擎天柱'])
    
3. 给字典增加/删除元素
fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80  }

del fc['巨无霸福特']

print(fc)

fc['巨无霸福特'] = 50

print(fc)
  • 删除字典里键值对是使用del语句 del 字典名[键]。

  • 而新增键值对是使用字典名[键]=值 。

    fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80  }
    
    fc['铁皮']=90
    
    print(fc)
    
4. 小结

点击关闭图片

  • 思考
    • 增加多个元素怎么操作?
    • 增加的元素要到具体的位置怎么操作?
    • 删除多个元素怎么操作?
5.字典的其他功能
1.元素追加
  • 直接添加
 >>> desc = {'name':'杨过','sex':'男','age':38}
 >>> print(desc)
 {'name': '杨过', 'sex': '男', 'age': 38}
 >>> desc ['wife']='小龙女'
 >>> print(desc)
 {'name': '杨过', 'sex': '男', 'age': 38, 'wife': '小龙女'}
        >>> 
  • dic1.update(dict2):把字典dict2的键值对添加到dict1中。(如果dict1和dict2有相同的键,那么对应的值会以更新的为准,即取dict2的值)
 >>> name = {'jack':18,'lucy':19,'lily':20}
 >>> name2 = {'jack':20,'tom':21,'david':22}
 >>> name.update(name2)
 >>> print(name)
 {'jack': 20, 'lucy': 19, 'lily': 20, 'tom': 21, 'david': 22}
 >>> 
  • dic.update(key=新value):用新的值替换旧的值
>>> name = {'杨过':'小龙女的老公','小龙女':'杨过的姑姑','尹志平':'杨过的情敌'}		
>>> name.update(杨过='绿帽子')		
>>> print(name)	
{'杨过': '绿帽子', '小龙女': '杨过的姑姑', '尹志平': '杨过的情敌'}
>>> 

>>> D = {'name':128,'age':89}		
>>> D.update(name=23)		
>>> print(D)		
{'name': 23, 'age': 89}
2.判断key是否存在
  • in/not in dict

     name = {'jack':18,'lucy':19,'lily':20}
     >>> print('jack' in name)
     True
     >>> 
     >>> print('大卫' in name)
     False
     >>> 
    
3.字典中的查找
  • print(dict.keys()):查找都有哪些键

    name = 'jack': 20, 'lucy': 19, 'lily': 20, 'tom': 21, 'david': 22}
     >>> print(name.keys())
     dict_keys(['jack', 'lucy', 'lily', 'tom', 'david'])
     >>> 
    
  • print(dict.values()):查找都有哪些值

    >>> print(name.values())
    dict_values([20, 19, 20, 21, 22])
    >>> 
    
  • print(dict.items()):查找所有键值对

    >>> name = {'jack': 20, 'lucy': 19, 'lily': 20, 'tom': 21, 'david': 22}
    >>> print(name.items())
    dict_items([('jack', 20), ('lucy', 19), ('lily', 20), ('tom', 21), ('david', 22)])
    >>> 
    
4.字典中的删除
  • del dict[keys]:如前所述

  • dict.clear():返回NONE

       >>> name = {'jack': 20, 'lucy': 19, 'lily': 20, 'tom': 21, 'david': 22}
       >>> name.clear()
       >>> print(name)
       {}
       >>> 
    
    5.字典中的多层嵌套
    >>> star = {'大陆':{'name':'蔡徐坤'},'港澳台':{'name':'周杰伦'}}
    >>> print(star)
    {'大陆': {'name': '蔡徐坤'}, '港澳台': {'name': '周杰伦'}}
    >>> print(star['大陆'])
    {'name': '蔡徐坤'}
    >>> print(star['大陆']['name'])
    蔡徐坤
    >>> 
    
    6.字典的遍历
    >>> name = {'name':'lucy','sex':'female','age':'18'}
    >>> for i in name:
    	print(i)
    	print(i,name[i])
    
    	
    name
    name lucy
    sex
    sex female
    age
    age 18
    >>> 
    
    >>> name = {'name':'lucy','sex':'female','age':'18'}
    >>> for i in name:
    	print(name[i])
    
    	
    lucy
    female
    18
    >>> 
    
    7.字典的特性:同一个键可以出现两次,但创建时如果同一个键被赋值2次,后一个值会被记住
    >>> dict = {'name':'lucy','age':19,'sex':'female','age':22}
    >>> print(dict)
    {'name': 'lucy', 'age': 22, 'sex': 'female'}
    >>> 
    

三、列表和字典的异同

  • 不同点

    1. 列表外面是[ ]中括号,字典外面是{}大括号。
    2. 列表中每个元素只有一部分,只有值,每个值有一个对应的小标。
      字典中每个元素都是【键:值】存在的, 每个值都有一个对应的键。
    transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛']
    
    fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80  }
    
  • 相同点

    1. 列表与字典中的元素都是用逗号隔开。
    2. 删除的方法del相同。
    transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛']
    del transformers[1]
    fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80  }
    del fc['大黄蜂']
    

四、练习

  1. 有一个列表list = [‘hello’,‘i’,‘love’,‘you’].请将列表中的love取出来并打印结果。

    # 第五节课练习
    
    >>> list = ['hello','I','love','you']
    		   
    >>> print(list[2])
    		   
    love
    >>> 
    
  2. 在童话镇里,狼人每天晚上都会起来,杀掉村里的一位平民。你需要将狼人查找出来,毒死他。

    # 第五节课练习
    
    >>> # 创建字典		   
    >>> dic = {'女巫':29,'狼人':30,'平民':50,'猎人':40}		   
    >>> print(dic['狼人'])		   
    30
    >>> 
    
  3. 现在有一个班的同学,含有小明、小红、小刚、熊大和熊二。后来大王和小王转学过来了,小红和熊大转学走了,请调整班级成员。

    # 第五节课练习
    
    >>> classroom = ['小明','小红','小刚','熊大','熊二']
    >>> print(classroom)
    ['小明', '小红', '小刚', '熊大', '熊二']
    >>> 
    
    >>> classroom.extend(['大王','小王'])	   
    >>> print(classroom)		   
    ['小明', '小红', '小刚', '熊大', '熊二', '大王', '小王']
    >>> 
    
    >>> classroom = ['小明', '小红', '小刚', '熊大', '熊二', '大王', '小王']	   
    >>> del classroom[1]   
    >>> print(classroom)   
    ['小明', '小刚', '熊大', '熊二', '大王', '小王']
    
    >>> del classroom[2]   
    >>> print(classroom)   
    ['小明', '小刚', '熊二', '大王', '小王']
    >>> 
    
  4. 请将列表mv_list1中⾦刚狼到叶问的数据提取出来,再将叶问删除,并添加⼀个你喜

    欢的电影名字

    mv_list1 = [“⻄红柿⾸富”,“银河护卫队”,“⾦刚狼”,“银河补习班”,“叶问”,“狮⼦王”,"钢铁

    侠"]

    mv_list1 = ['西虹市首富','银河护卫队','金刚狼','银河补习班','叶问','钢铁侠','狮子王']
    
    # 提取'金刚狼'到'叶问'的数据
    print(mv_list1[2:5])
    
    # 删除'叶问'
    print(mv_list1.index('叶问'))
    del mv_list1[4]
    print(mv_list1)
    
    # 添加一个我喜欢的电视
    mv_list1.insert(-2,'神雕侠侣')
    mv_list1.append('不能说的秘密')
    print(mv_list1)
    
  5. .=通讯录管理系统=

    1.增加姓名和⼿机

    2.删除姓名

    3.修改⼿机

    4.查询所有⽤户

    5.根据姓名查找⼿机号

    6.退出程序

    要求:运⾏的代码终端可以看到上⾯这个界⾯,使⽤字典储存你的好友⼿机号,选择对应的

    数字,

    执⾏对应的功能,例如选择增加姓名和⼿机号,等待⽤户输⼊后将⼿机号和姓名⼀并储

    存起来,并显示储存成功

    (注意:⽤字典储存呦!)

    print('''=======通讯录管理系统=======
    1.增加姓名和手机
    2.删除姓名
    3.修改手机
    4.查询所有用户
    5.根据姓名查找手机号
    6.退出程序
    ''')
    
    dict ={'李雷':13678990098}
    
    while True: #条件为真,程序一直执行
        answer =int(input('请输入需要执行的数字:'))
    
        if answer ==1:
            name = input('请输入您的姓名:')
            pwd = int(input('请输入您的手机号:'))
            dict[name]=pwd
            print(dict)
    
        elif answer ==2:
            name2 = input('请输入您要删除的姓名:')
            if name2 in dict:
                del dict[name2]
                print(dict)
            else:
                print('用户名不存在')
    
        elif answer ==3:
            name3 = input('请输入您要修改的姓名:')
            if name3 in dict:
                phone = int(input('请输入新的手机号:'))
                dict [name3]=phone
                print(dict)
            else:
                print('用户名不存在')
    
        elif answer ==4:
            for i in dict:
                print(i)
    
        elif answer ==5:
            name4 =input('请输入您要查询手机号的姓名:')
            if name4 in dict:
                print(dict[name4])
            else:
                print('用户名不存在')
    
        elif answer ==6:
            print('您已成功退出程序')
            break #中断循环
    
    
        else:
            print('输入的号码不合法,请重新输入')
    
    
发布了15 篇原创文章 · 获赞 0 · 访问量 257

猜你喜欢

转载自blog.csdn.net/fightingoyo/article/details/103899785
今日推荐