一、列表
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 字典[键] - 删除字典中指定键对应的键值对
-
- 字典.pop(键) - 取走字典中指定键对应的值
四、字符串
-
容器;将’ '或者" "作为容器的标志,里面的每一个符号就是字符串中的每个元素。 例如:‘abc’、‘10,20,30’
-
字符串是不可变的;字符串是有序的(支持下标操作)
-
元素:字符串的元素又叫字符,分为普通字符和转义字符两种
- \n - 换行
-
\t - 水平制表符(tab键)
1、字符串查操作
字符串[下标] - 获取字符串中指定下标对应的元素
五、元组
元组就是不可变的列表: (元素1, 元素2, 元素3,…)