day05-容器型数据类型

一、列表

1、加法和乘法运算

1)列表1 + 列表2 - 将两个列表合并产生一个新的列表
2)列表 * N - 将列表中的元素重复N次产生一个新的列表
list1 = [2,4,6]
print(list1*3)  #[2,4,6,2,4,6,2,4,6]

2、in 和 not in

1)数据 in 列表 - 判断表中是否存在指定对应的元素
2)数据 not in 列表 - 判断表中是否不存在指定数据对应的元素
# 练习:已知一个列表保存了多个学生的姓名,要求去掉列表中重复的名字
names = ['小明', '张三', '李四', '张三', '张三', '小明', '王五', '王五']
name1=[]
for x in names:
    if x not in name1
    name1.append(x)
print(name1)

3、相关函数

1)max(列表)、min(列表)
list1=[10,20,34,56,]
print(max(list1),min(list1))
2) sorted(列表)
  • sorted(列表) - 将元素中的元素从小到大排序 ,产生一个新的列表
  • sorted(列表,reverse=True) - 将列表中得元素从小到大排序,产生一个新的列表
list1 = [10,20,60,88,43]
new_list1 = sorted(list1)
print(new_list1) #[10,20,43,60,88]

list1 = [10,20,60,88,43]
new_list2 = sorted(list1,reverse = True)
print(new_list2) #[88,60,43,20,10]
3)len(列表) - 获取列表长度(列表中元素得个数)
4)list(数据) - 将指定得数据转换成列表(这儿得数据必须是序列)
  • 所有得序列都可以转换成列表,转换成列表的时候,序列中得元素就是列表中的元素
print(list('abc'))   #['a','b','c']
print(list(range(5)))  #[0,1,2,3,4]

二、字典

1、字典存在的意义

需要同时保存多个意义不同的数据就需要使用字典,需要保存多个意义相同的数据就使用列表

2、什么是字典(dict)

  • 容器;将{}作为容器的标志,里面多个键值对用逗号隔开(一个键值对就是一个元素): {键1:值1, 键2:值2, 键3:值3, …}

  • 字典是可变的(支持增删改);字典无序(顺序不影响结果;不支持下标操作)

  • 键的要求:

    • a.不可变类型的数据才能作为字典的(数字、字符串、布尔、空值、元组),一般使用字符串作为字典键。

    • b.键是唯一

  • 值的要求:没有

  • 空字典:dict1 = {}

3、字典是无序的

print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})     # True

4、字典的键必须是不可变类型的数据

dict2 = {1: 10, 'a': 20, True: 30, None: 40, (10, 20): 50}
print(dict2)

dict3 = {1: 10, 'a': 20, True: 30, None: 40, [10, 20]: 50}        # 报错!

5、键是唯一的

三、字典的基本操作

注意:字典保存数据真正想要保存的是值,键是用来对值进行区分和说明

1、查

1) 查单个 - 获取字典的值
  • 字典[键] - 获取字典中指定键对应的值,如果键不存在就会报错
  • 字典.get(键) - 获取字典中指定键对应的值;如果键不存在不会报错,并且会返回None
  • 字典.get(键,默认值) - 获取字典中指定键对应的值;如果键不存在不会报错,并且会返回默认值
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(class1['header_teacher']['tel'])
# 4)打印所有学生的名字
for x in class1['students']:
    print(x['name'])
# 5)打印所有未成年学生的名字和性别
for x in class1['students']:
    if x['age'] < 18:
        print(x['name'],x['gender'])
# 6)打印所有学生的联系人名字
for x in class1['students']:
	print(x['link_man']['name'])
# 7)计算所有男生的平均年龄
ages=0
n=0
for x in class1['students']:
    if x['gender'] == '男'
    ages += x['age']
    n +=1
print(ages/n)
2)遍历 - 一个一个地获取所有的值
  • for 变量 in 字典:
    循环体(变量依次取到的是字典的键)

2、增

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

3、改

  • 字典[键] = 值 - 如果键存在就修改指定键对应的值

4、删 - 删除键值对

  • del 字典[键] - 删除字典中指定键对应的键值对

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

四、字符串

  • 容器;将’ '或者" "作为容器的标志,里面的每一个符号就是字符串中的每个元素。 例如:‘abc’、‘10,20,30’

  • 字符串是不可变的;字符串是有序的(支持下标操作)

  • 元素:字符串的元素又叫字符,分为普通字符和转义字符两种

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

1、字符串查操作

字符串[下标] - 获取字符串中指定下标对应的元素

五、元组

元组就是不可变的列表: (元素1, 元素2, 元素3,…)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值