Day5-容器型数据类型

容器型数据类型

1、列表相关操作
  • 加法和乘法运算
'''
列表1 + 列表2     -    将两个列表合并产生一个新的列表(新列表中的元素,是两列表所有的元素)
                      列表先后决定内部元素先后排列顺序,

列表 * N         -     将列表中的元素重复N次,产生一个新的列表;新列表中的
                      元素排列顺序和前列表一样
'''
  • in 和 not in (判断结果为布尔值)

数据 in 列表 —— 判断列表中是否存在直到数据对应的元素

数据 not in 列表 —— 判断列表中是否不存在直到数据对应的元素

**练习:**已知一个列表保存了多个学生的姓名,要求去掉列表中重复的名字

names = ['小明', '张三', '李四', '张三', '张三', '小明', '王五', '王五']
names1 = []
for x in names:
    if x not in names1:
        names1.append(x)
print(names1)                # ['小明', '张三', '李四', '王五']
  • 相关函数

1)max(列表)、min(列表)
2)sorted(列表) - 将列表中的元素从小到大排序,产生一个新的列表;
sorted(列表,reverse = True) - 将列表中的元素从大到小排序,产生一个新的列表

3)len (列表) - 获取列表长度(列表中元素的个数)

4) list(数据) - 将指定的数据转换成列表(这儿的数据必须是序列

**注意:**所有的序列都可以转换成列表,转换成列表的时候,序列中的元素,就是列表中的元素;

案例

list1 = [21,45,95,206,548,12,0]
new_list = sorted(list)
print(new_list)             # [0, 12, 21, 45, 95, 206, 548]


list1 = [21,45,95,206,548,12,0]
new_list = sorted(list,reverse=True)
print(new_list)             # [548, 206, 95, 45, 21, 12, 0]


print(list('abc'))                  #['a' , 'b' ,'c',]
print(list(range(8)))

2、字典
  • 字典存在的价值:键是对值的解释说明及区分

需求:定义一个变量保存一个学生的信息

stu1 = ['张三',25,'男',170,89,]   				#['张三', 25, '男', 170, 89]
print(stu1)                                    

stu2 = {'name':'张三','age':25,'性别':'男'}	  #{'name': '张三', 'age': 25, '性别': '男'}
print(stu2)

字典与列表的区别:保存多个数据时,如果多个数据的意义不相同,用字典;反之用列表

  • 什么时字典(dict) —— 字典的键值对 成对出现
'''
容器:将{ }作为容器的标志,里面多个键值对用逗号隔开(一个键值对就是一个元素)
{键1:值1,键2:值2}

字典是可变(支持增删改);字典无序  —   控制的是数据的意义(不支持下标操作)顺序不影响结果

键的要求: 1)、不可变类型的数据才能作为字典的键 (数字、字符串、布尔、空值、元组),
         2)、一般用于字符串作为字典键
         3)、键是唯一
值的要求:没有要求,任何数据类型(可重复)
'''
  • 空字典 —— { }

注意:字典的键必须是不可变类型的数据;键是唯一的;字典无序

3、字典的基本操作

字典保存数据,真正想要保存的是值,键是对值来进行区分说明的;

  • 查单个 —— 获取字典的一个值

    '''
    a、字典【键】                 —   获取字典中指定键对应值,如果键不存在,报错
    b、字典 . get(键)            —  获取字典中指定键对应值,如果键不存在,不会报错,并且返回None 空值
    c、字典 . get(键,默认值)    —   如果键不存在,不会报错,并且返回默认值
    '''
    

    **注意:**三种方法,键存在的时候,表达的意义是一样的,只有当键不存在的时候,一种报错,一种返回空值,一种返回默认值

    案例1

    students = [
        {'name':'小明','age':18,'score':59},
        {'name':'stu2','age':18,'score':79},
        {'name':'小','age':18,'score':59},
        {'name':'小2明','age':18,}
    ]
    sum1 = 0
    for x in students:
        sum1 += x.get('score',0 )
    print('总分:',sum1)                           # 总分:197          
    

    案例2

    class1 = {
        'name': 'python2302',
        'address': '11教',
        'teacher': {'name': '余婷', 'age': 18, 'gender': '女', 'qq': '726550822'},
        'header_teacher': {'name': '舒玲', 'age': 18, 'gender': '女', 'tel': '110'},
        'students': [
            {'name': 'stu1', 'age': 19, 'gender': '男', 'link_man': {'name': '张三', 'tel': '120'}},
            {'name': 'stu2', 'age': 16, 'gender': '女', 'link_man': {'name': '李四', 'tel': '119'}},
            {'name': 'stu3', 'age': 22, 'gender': '女', 'link_man': {'name': '老王', 'tel': '234'}},
            {'name': 'stu4', 'age': 17, 'gender': '男', 'link_man': {'name': '赵六', 'tel': '2112'}},
            {'name': 'stu5', 'age': 29, 'gender': '男', 'link_man': {'name': '邓七', 'tel': '5482'}},
            {'name': 'stu6', 'age': 25, 'gender': '女', 'link_man': {'name': '王八', 'tel': '9223'}}
        ]
    }
    # 1)打印班级名称
    print(class1['name'])
    
    # 2)打印讲师的名字和qq
    print(class1['teacher']['name'],class1['teacher']['qq'])
    
    # 3)打印班主任的电话
    print(class['header_teacher']['name'])
    
    # 4)打印所有学生的名字
    name1 = class1['students']
    for x in name1:
        print(x.get('name'))
        
    # 5)打印所有未成年学生的名字和性别
    for x in class1['students']:
        if x.get('age') < 18 :
            print(x.get('name'),x.get('gender'))
            
    # 6)打印所有学生的联系人的名字
    for x in class1['students']:
        print(x['link_man']['name'])
        
    # 7)计算所有男生的平均年龄
    total_age = count = 0
    student = class1['students']
    for stu in student:
        if stu['gender']=='男生':
            total_age += stu['age']
            count +=1
            print(int(total_age / count))
    
  • 增、改

    字典[键] = 值

    如果字典中,键不存在,就是添加键值对,反之就是修改指点键对应的值

    字典. setdefault(键,值) - 在字典中添加指定键值对(键如果存在不会修改键对应的值)

  • 删 - 删除键值对

    del 字典 【键】 - 删除字典中指定键对应的键值对

    字典. pop(键) - 取走字典中指定键对应的值

4、字符串和元组
  • 字符串
'''
容器:将 "" 或者 '  '  作为容器的标志,里面的每一个符号就是字符串中的每个元素
字符串是不可变的;字符串是有序的(支持下标操作)
元素:字符串的元素又叫字符,分为普通字符和转义字符两种

\n  -   换行
\t   -    水平制表符(tab键)
'''

字符串获取元素的方法和列表一样

元组 : 就是不可变的列表 - (元素1,元素2,元素3.。。。) 列表所有的查操作都支持

print('adv\nadfa')
print('\tadf\n adfa')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值