![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/11ea3412b9ff6c6dc8b749c3fb927008.png#pic_center)
01-review
nums = [19, 82, 67, 65, 73, 60]
for x in nums:
print(x)
print('------------------------------------------华丽的分割线------------------------------------------------')
for x in range(len(nums)):
print(x, nums[x])
print('------------------------------------------华丽的分割线------------------------------------------------')
for x1, x2 in enumerate(nums):
print(x1, x2)
nums.append(100)
print(nums)
nums.insert(0, 200)
print(nums)
nums.extend([11, 22, 33])
print(nums)
nums = [200, 19, 82, 67, 65, 73, 60, 100, 11, 22, 33]
del nums[1]
print(nums)
nums.remove(82)
print(nums)
result = nums.pop()
print(nums, result)
result = nums.pop(0)
print(nums, result)
nums = [200, 67, 65, 73, 60, 100, 11, 22, 33]
nums[2] = 650
print(nums)
print([10, 20] + [100, 200, 300])
print([10, 20] * 3)
print([10, 20, 30] == [10, 30, 20])
print([10, 3, 8000] > [10, 4])
print(89 in [10, 20, 30])
print(89 not in [10, 20, 30])
02-homework
nums = [90, 83, 62, 77, 59, 81]
sum1 = 0
for x in nums:
if x % 2 == 0:
sum1 += x
print(sum1)
result = [x for x in nums if x % 2 == 0]
print(sum(result))
print('------------------------------------------华丽的分割线------------------------------------------------')
nums = [90, 83, 62, 717, 59, 81]
count = 0
for x in nums:
if x // 10 % 10 == 1:
count += 1
print(count)
nums = [90, 90, 62, 717, 59, 81]
print(nums[1::2])
result = [item for index, item in enumerate(nums) if index % 2 != 0]
print(result)
print('------------------------------------------华丽的分割线------------------------------------------------')
nums = [10, 3, 6, 12]
result = [x*2 for x in nums]
print(result, nums)
nums = [10, 3, 6, 12]
for index in range(len(nums)):
nums[index] *= 2
print(nums)
"""
奇数个:
7 - 3
5 - 2
3 - 1`
N -> N//2
偶数个:
8 - 3,4
6 - 2,3
4 - 1,2
N - N//2-1, N//2
"""
print('------------------------------------------华丽的分割线------------------------------------------------')
nums = [10, 2, 6, 12, 10,12, 90]
length = len(nums)
if length % 2 != 0:
print(nums[length//2])
else:
print(nums[length//2 - 1], nums[length//2])
print('------------------------------------------华丽的分割线------------------------------------------------')
list1 = [10, 1.23, 'abc', True, 100, 'hello', '20', 5]
result = [x for x in list1 if type(x) == int]
print(result)
scores = [45, 60, 89, 30, 12, 59, 99, 80, 71, 66]
for x in scores[:]:
if x < 60:
scores.remove(x)
print(scores)
scores = [45, 60, 89, 30, 12, 59, 99, 80, 71, 66]
result = [x for x in scores if x >= 60]
print(result)
print('------------------------------------------华丽的分割线------------------------------------------------')
names = ['小明', '张三', '李四', '张三', '张三', '小明', '王五', '王五']
new_names = []
for x in names:
if x not in new_names:
new_names.append(x)
print(new_names)
names = ['小明', '张三', '李四', '张三', '张三', '小明', '王五', '王五']
"""
['张三', '李四', '张三', '张三', '小明', '王五', '王五'] '小明'
['李四', '张三', '张三', '小明', '王五', '王五'] '张三'
['张三', '张三', '小明', '王五', '王五'] '李四' -> ['张三', '张三', '小明', '王五', '王五', '李四']
['张三', '小明', '王五', '王五', '李四'] '张三'
['小明', '王五', '王五', '李四'] '张三' -> ['小明', '王五', '王五', '李四', '张三']
['王五', '王五', '李四', '张三'] '小明' -> ['王五', '王五', '李四', '张三', '小明']
['王五', '李四', '张三', '小明'] '王五'
['李四', '张三', '小明'] '王五' -> ['李四', '张三', '小明', '王五' ]
"""
for x in range(len(names)):
name = names.pop(0)
if name not in names:
names.append(name)
print(names)
list1 = [10, 23, 39, 41, 52, 55, 80, 99, 100]
list2 = [9, 38, 55, 70]
print(sorted(list1 + list2))
result = []
while True:
a = list1.pop(0)
b = list2.pop(0)
if a < b:
result.append(a)
list2.insert(0, b)
else:
result.append(b)
list1.insert(0, a)
if list1 == [] or list2 == []:
break
result += list1 + list2
print(result)
list1 = [10, 23, 45, 67, 91]
lis = [13, 1.23, 'abc', True, 100, 93, 'hello', '20', 5]
result = [x for x in lis if type(x) != int or x % 10 >= 5]
print(result)
result = [x for x in lis if not (type(x) == int and x % 10 < 5)]
print(result)
lis1 = [(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]
result = [x[-1] for x in lis1]
print(result)
nums = [23, 4, 67, 88, 90, 21]
result = [x // 2 if x % 2 == 0 else x * 2 for x in nums]
print(result)
03-认识字典
stu = ['小明', 32, '电子信息', 170, 80, 90]
print(stu[1])
stu = {
'name': '小明',
'age': 32,
'专业': '电子信息',
'height': 170,
'weight': 80,
'score': 90
}
print(stu['age'])
"""
如果要保存多个意义不同的数据,就使用字典;要保存多个意义相同的数据就用列表
"""
"""
字典是系统类型,属于容器型数据类型(序列);
将{}作为容器的标志,里面多个键值对(元素)用逗号隔开: {键1:值1, 键2:值2, 键3:值3, ...}
字典是可变(支持增删改);字典是无序(不支持下标操作;顺序不影响结果)
键 - 键必须是不可变类型的数据(数字、字符串、布尔、空值、元组); 键唯一(同一个字典中同一个键只能出现一次)
值 - 没有要求(任何类型的数据)
"""
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})
dict1 = {10: 20, 'a': 30, (10, 20): 40}
dict3 = {'a': 10, 'b': 20, 'a': 30}
print(dict3)
dict4 = {}
04-字典的查操作
"""
1)字典[键] - 获取字典中指定键对应的值,如果键不存在程序会报错
2)字典.get(键) - 获取字典中指定键对应的值,如果键不存在不会报错并且会返回None
3)字典.get(键, 默认值) - 获取字典中指定键对应的值,如果键不存在不会报错并且会返回默认值
"""
dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
print(dog['type'])
print(dog['name'])
print(dog.get('price'))
print(dog.get('color'))
print(dog.get('weight'))
print(dog.get('age', 0))
print(dog.get('color', '白色'))
print(dog.get('weight', 5))
class1 = {
'className': 'Python2205',
'classRoom': '11教',
'lecturer': {'name': '余婷', 'age': 18, 'tel': '13678192302', 'gender': '女'},
'classTeacher': {'name': '燕子姐', 'age': 18, 'tel': '119', 'QQ': '8282821'},
'students': [
{'name': 'stu1', 'age': 19, 'tel': '1922333', 'gender': '男', 'linkman': {'name': '张三', 'tel': '11923'}},
{'name': 'stu2', 'age': 28, 'tel': '8727832', 'gender': '男', 'linkman': {'name': '小明', 'tel': '19202'}},
{'name': 'stu3', 'age': 30, 'tel': '291912', 'gender': '女', 'linkman': {'name': '李四', 'tel': '1910283'}},
{'name': 'stu4', 'age': 17, 'tel': '2349183', 'gender': '男', 'linkman': {'name': '老王', 'tel': '109221567'}},
{'name': 'stu5', 'age': 16, 'tel': '27273482', 'gender': '女', 'linkman': {'name': '王五', 'tel': '119283427'}},
{'name': 'stu6', 'age': 22, 'tel': '1242402', 'gender': '男', 'linkman': {'name': '赵六', 'tel': '2091834'}}
]
}
print(class1['className'])
teacher = class1['lecturer']
print(teacher['name'], teacher['tel'])
print(class1['classTeacher']['name'], class1['classTeacher']['QQ'])
result = [x['name'] for x in class1['students']]
print(result)
for stu in class1['students']:
print(stu['name'])
total_age = count = 0
for stu in class1['students']:
if stu['gender'] == '男':
total_age += stu['age']
count += 1
print('男生的平均年龄:', total_age / count)
for stu in class1['students']:
if stu['gender'] == '女':
print(stu['linkman']['tel'])
"""
方法1:
for 变量 in 字典:
循环体(变量获取到的是字典的键)
方法2:
for 变量1,变量2 in 字典.items():
循环体(变量1依次取到的是所有的键,变量2依次取到的是所有的值)
"""
print('------------------------------------------华丽的分割线------------------------------------------------')
dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
for x in dog:
print(x, dog[x])
print('------------------------------------------华丽的分割线------------------------------------------------')
for key, value in dog.items():
print(key, value)
05-字典的增删改
"""
1)字典[键] = 值 - 如果键不存在就添加键值对;如果键存在就修改指定键对应的值
2)字典.setdefault(键, 值) - 添加键值对(只会在键不存在的时候实现添加的功能,键存在无作为)
"""
stu = {'name': '小明', 'age': 18, 'height': 177}
print(stu)
stu['weight'] = 70
print(stu)
stu['age'] = 28
print(stu)
print('------------------------------------------华丽的分割线------------------------------------------------')
stu = {'name': '小明', 'age': 18, 'height': 177}
stu.setdefault('weight', 80)
print(stu)
stu.setdefault('age', 30)
print(stu)
goods = [
{'name': '火腿肠', 'price': 1.5, 'count': 53, 'discount': 0.9},
{'name': '泡面', 'price': 3.5, 'count': 100},
{'name': '矿泉水', 'price': 1, 'count': 135},
{'name': '面包', 'price': 5.5, 'count': 10, 'discount': 0.75}
]
for x in goods:
x.setdefault('discount', 1)
print(goods)
print('------------------------------------------华丽的分割线------------------------------------------------')
stu = {'name': '小明', 'age': 18, 'height': 177, 'gender': '男'}
del stu['height']
print(stu)
stu = {'name': '小明', 'age': 18, 'height': 177, 'gender': '男'}
result = stu.pop('gender')
print(stu, result)
06-字典的相关操作和函数
"""
键 in 字典
键 not in 字典
"""
dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
print(3 in dog)
print('name' in dog)
print(len(dog))
"""
dict(数据) - 将指定数据转换成字典
数据的要求:1)数据本身是一个大序列
2)大序列中的每个元素是有且只有两个元素的小序列,并且小序列中的第一个元素是不可变类型的数据
"""
data1 = ['ab', [10, 20], '10']
print(dict(data1))
data2 = [('age', 20), ('name', '张三'), ('gender', '男')]
print(dict(data2))
07-字典相关方法
dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
dog.clear()
print(dog)
dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
dog1 = dog.copy()
print(dog1)
"""
字典.keys() - 获取字典所有的键并且返回
字典.values() - 获取字典所有的值并且返回
字典.items() - 将字典中的每个键值对转换一个一个的元组作为序列中的元素返回
"""
print(dog.keys())
print(dog.values())
print(dog.items())
dog.update({'a': 10, 'b': 20, 'age': 10})
print(dog)
08-拷贝问题
a = [10, 20, 30, 40]
b = a
print(b)
c = a.copy()
print(c)
a.append(100)
print('a:', a)
print('b:', b)
print('c:', c)
print('------------------------------------------华丽的分割线------------------------------------------------')
from copy import copy, deepcopy
list1 = [10, 20, 30, 40]
list2 = copy(list1)
list3 = deepcopy(list1)
print('修改前:')
print('浅拷贝的list2', list2)
print('深拷贝的list3', list3)
print('修改后:')
list1.append(100)
print('浅拷贝的list2', list2)
print('深拷贝的list3', list3)
print('------------------------------------------华丽的分割线------------------------------------------------')
list1 = [10, [100, 200], 20, 30]
list2 = copy(list1)
list3 = deepcopy(list1)
print('修改前:')
print('浅拷贝的list2', list2)
print('深拷贝的list3', list3)
list1.append(100)
print('修改方式1后:', list1)
print('浅拷贝的list2', list2)
print('深拷贝的list3', list3)
list1[1].append(50)
print('修改方式2后:', list1)
print('浅拷贝的list2', list2)
print('深拷贝的list3', list3)