Python零基础自学3(黑马)

视频链接:https://www.bilibili.com/video/BV1o4411M71o?p=15&share_source=copy_web
课件PDF–链接: https://pan.baidu.com/s/1kYX3FcDasnFMLT8FCuHIGw 提取码: 86hy
以下均为个人笔记

一、元组 – tuple

⼀个元组可以存储多个数据,元组内的数据是不能修改的。
列表也可以存储多个数据,但是列表内的数据是可以修改的

1.1 定义元组

元组特点:定义元组使⽤⼩括号,且逗号隔开各个数据,数据可以是不同的数据类型。

# 多个数据元组
t1 = (10, 20, 30)
# 单个数据元组
t2 = (10,)

注意:如果定义的元组只有⼀个数据,那么这个数据后⾯也好添加逗号,否则数据类型为唯⼀的这个数据的数据类型

t2 = (10,)
print(type(t2)) # tuple
t3 = (20)
print(type(t3)) # int
t4 = ('hello')
print(type(t4)) # str

1.2 元组的常⻅操作

元组数据不⽀持修改,只⽀持查找
按下标查找数据

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1[0]) # aa

index():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index⽅法相同。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.index('aa')) # 0

count():统计某个数据在当前元组出现的次数。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.count('bb')) # 2

len():统计元组中数据的个数。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(len(tuple1)) # 4

注意:元组内的直接数据如果修改则⽴即报错

tuple1 = ('aa', 'bb', 'cc', 'bb')
tuple1[0] = 'aaa' #报错

但是如果元组⾥⾯有列表,修改列表⾥⾯的数据则是⽀持的,故⾃觉很重要。

tuple2 = (10, 20, ['aa', 'bb', 'cc'], 50, 30)  # 列表可修改,但尽量别用这种方式,规范化
print(tuple2[2]) # 访问到列表['aa', 'bb', 'cc']

tuple2[2][0] = 'aaaaa'
print(tuple2)
# 结果:(10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)

二、字典

2.1 应用场景

思考1: 如果有多个数据,例如:‘Tom’, ‘男’, 20,如何快速存储?
在这里插入图片描述
思考4:数据顺序发⽣变化,每个数据的下标也会随之变化,如何保证数据顺序变化前后能使⽤同⼀的标准查找数据呢?

答:字典,字典⾥⾯的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不⽀持下标,后期⽆论数据如何变化,只需要按照对应的键的名字查找数据即可。

2.2 创建字典的语法

字典特点:

  • 符号为⼤括号
  • 数据为键值对形式出现
  • 各个键值对之间⽤逗号隔开
# 有数据字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 空字典
dict2 = {}
dict3 = dict()

注意:⼀般称冒号前⾯的为键(key),简称k;冒号后⾯的为值(value),简称v。

2.3 字典常⻅操作

2.3.1 增

写法:字典序列[key] = 值
注意:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
注意:字典为可变类型

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
dict1['name'] = 'Rose'
# 结果:{'name': 'Rose', 'age': 20, 'gender': '男'}
print(dict1)
dict1['id'] = 110
# {'name': 'Rose', 'age': 20, 'gender': '男', 'id': 110}
print(dict1)

2.3.2 删

del() / del:删除字典或删除字典中指定键值对。

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
del dict1['gender']
# 结果:{'name': 'Tom', 'age': 20}
print(dict1)

clear():清空字典

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
dict1.clear()
print(dict1) # {}

2.3.3 改

写法:字典序列[key] = 值
注意:如果key存在则修改这个key对应的值 ;如果key不存在则新增此键值对。

2.3.4 查

  • key值查找
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1['name']) # Tom
print(dict1['id']) # 报错

如果当前查找的key存在,则返回对应的值;否则则报错。

  • get()
    语法:字典序列.get(key, 默认值)
    注意:如果当前查找的key不存在则返回第⼆个参数(默认值),如果省略第⼆个参数,则返回None。
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.get('name')) # Tom
print(dict1.get('id', 110)) # 110
print(dict1.get('id')) # None
  • keys()/values()/items()
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])
print(dict1.values()) # dict_values(['TOM', 20, '男'])
print(dict1.items()) # dict_items([('name', 'TOM'), ('age', 20), ('gender', '男')])

2.4 字典的循环遍历

  • 1、遍历字典的key
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key in dict1.keys():
	print(key,end='\t')#name	age	gender
  • 2、遍历字典的value
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for value in dict1.values():
	print(value,end='\t') #TOM	20	男	
  • 3、遍历字典的元素
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for item in dict1.items():
	print(item)

在这里插入图片描述

  • 4、遍历字典的键值对
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key, value in dict1.items():
 print(f'{key} = {value}')

在这里插入图片描述

三、集合

3.1 创建集合

创建集合使⽤ {} 或 set() , 但是如果要创建空集合只能使⽤ set() ,因为 {} ⽤来创建空字典。

s1 = {10, 20, 30, 40, 50}
print(s1)# {50, 20, 40, 10, 30}
s2 = {10, 30, 20, 10, 30, 40, 30, 50}
print(s2)# {50, 20, 40, 10, 30}
s3 = set('abcdefg')
print(s3)# {'f', 'c', 'e', 'b', 'a', 'g', 'd'}
s4 = set()
print(type(s4)) # set
s5 = {}
print(type(s5)) # dict

特点:

  • 集合可以去掉重复数据;
  • 集合数据是⽆序的,故不⽀持下标

3.2 集合常⻅操作⽅法

3.2.1 增

  • add()
  • update(),追加的数据是序列。
s = {10, 20}
s.add(100)
s.add(10)
print(s) # {100, 10, 20}
#因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进⾏任何操作。

s1 = {10, 20}
# s1.update(100) # 报错
s1.update([100, 200])
s1.update('abc')
print(s1) #{100, 200, 10, 'a', 'b', 20, 'c'}

3.2.2 删

  • remove(),删除集合中的指定数据,如果数据不存在则报错。
  • discard(),删除集合中的指定数据,如果数据不存在也不会报错。
  • pop(),随机删除集合中的某个数据,并返回这个数据。
#  remove(),删除集合中的指定数据,如果数据不存在则报错。
s1 = {10, 20}
s1.remove(10)
print(s1) #{20}
#  s1.remove(10) # 报错
#  print(s1)

#  discard(),删除集合中的指定数据,如果数据不存在也不会报错
s1 = {10, 20}
s1.discard(10)
print(s1)  #{20}
s1.discard(10)
print(s1)  #{20}

#  pop(),随机删除集合中的某个数据,并返回这个数据。
s1 = {10, 20, 30, 40, 50}
del_num = s1.pop()
print(del_num)  # 50
print(s1)  #{20, 40, 10, 30}

3.2.3 查

  • in:判断数据在集合序列
  • not in:判断数据不在集合序列
s1 = {10, 20, 30, 40, 50}
print(10 in s1)    # True
print(10 not in s1)# False

四、公共操作

4.1 运算符

在这里插入图片描述
+

# 1.字符串
str1 = 'aa'
str2 = 'bb'
str3 = str1 + str2
print(str3) # aabb

# 2.列表
list1 = [1,2]
list2 = [3,4]
list3 = list1 + list2
print(list3)# [1, 2, 3, 4]

# 3.元组
tuple1 = (1,2)
tuple2 = (3,4)
tuple3 = tuple1 + tuple2
print(tuple3)# (1, 2, 3, 4)
str1 = 'a'
list1 = ['hello']
t1 = ('world  ')

# *:复制
print(str1 * 5)#aaaaa
print(' - ' * 5)# -  -  -  -  - 
print(list1 * 4)#['hello', 'hello', 'hello', 'hello']
print(t1 * 6)#world  world  world  world  world  world  

in或not in

str1 = 'abcd'
list1 = [10,20,30,40]
t1 = (100,200,300,400)
dict1 = {'name':'python', 'age':24}

print('s' in str1)#False
print('a' in str1)#True

print(10 not in list1)#False
print(20 in list1)#True

print(100 in t1)#True

# 4.name是否存在
print('name' in dict1)#True
print('name' in dict1.keys())#True
print('name' in dict1.values())#False

4.2 公共方法

在这里插入图片描述

  • len()
# 1. 字符串
str1 = 'abcdefg'
print(len(str1)) # 7
# 2. 列表
list1 = [10, 20, 30, 40]
print(len(list1)) # 4
# 3. 元组
t1 = (10, 20, 30, 40, 50)
print(len(t1)) # 5
# 4. 集合
s1 = {10, 20, 30}
print(len(s1)) # 3
# 5. 字典
dict1 = {'name': 'Rose', 'age': 18}
print(len(dict1)) # 2
  • del()
# 1. 字符串
str1 = 'abcdefg'
del str1
print(str1)
# 2. 列表
list1 = [10, 20, 30, 40]
del(list1[0])
print(list1) # [20, 30, 40]
  • max()
# 1. 字符串
str1 = 'abcdefg'
print(max(str1)) # g
# 2. 列表
list1 = [10, 20, 30, 40]
print(max(list1)) # 40
  • min()
# 1. 字符串
str1 = 'abcdefg'
print(min(str1)) # a
# 2. 列表
list1 = [10, 20, 30, 40]
print(min(list1)) # 10
  • range()
    注意:range()⽣成的序列不包含end数字。
# 1 2 3 4 5 6 7 8 9
for i in range(1, 10, 1):
 print(i)
# 1 3 5 7 9
for i in range(1, 10, 2):
 print(i)
# 0 1 2 3 4 5 6 7 8 9
for i in range(10):
 print(i)
  • enumerate()
    语法:enumerate(可遍历对象, start=0)
    注意:start参数⽤来设置遍历数据的下标的起始值,默认为0。
list1 = ['a', 'b', 'c', 'd', 'e']
for i in enumerate(list1):
	 print(i)
for index, char in enumerate(list1, start=0):
	 print(f'下标是{index}, 对应的字符是{char}')

在这里插入图片描述

4.3 容器类型转换

  • tuple()
    作⽤:将某个序列转换成元组
  • list()
    作⽤:将某个序列转换成列表
  • set()
    作⽤:将某个序列转换成集合
list1 = [10,20,30,10,60]
t1 = {1, 2, 3, 5, 6, 4, 5}
s1 = ('a','b','d','a')

# tuple()--转换成元组
print(tuple(list1))#(10, 20, 30, 10, 60)
print(tuple(s1))   #('a', 'b', 'd', 'a')

# list()--转换成列表
print(list(t1))#[1, 2, 3, 4, 5, 6]
print(list(s1))#['a', 'b', 'd', 'a']

# set()--转换成集合--还可以去重,不支持下标
print(set(list1))#{10, 20, 30, 60}
print(set(t1))   #{1, 2, 3, 4, 5, 6}

注意:

  • 集合可以快速完成列表去重
  • 集合不⽀持下标

4.4 总结

运算符

  • in / not in

公共⽅法

  • len()
  • del()
  • range()
  • enumerate()

数据类型转换

  • tuple()
  • list()
  • set()

五、推导式

5.1 列表推导式

作⽤:⽤⼀个表达式创建⼀个有规律的列表或控制⼀个有规律列表。
列表推导式⼜叫列表⽣成式。

# 需求:0 ,1,2,3....
# 1.循环实现;2.列表推导式(化简代码:创建或控制有规律的列表)
"""
1.1 创建空列表
1.2 循环将有规律的数据写入到列表
"""

# while 实现----
list1 = [ ]
i = 0
while i < 10 :
    list1.append(i)  # 一次追加数字到列表中
    i += 1
print(list1)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# for 实现----
list2 = []
for i in range (10):
    list2.append(i)
    i += 1
print(list2)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 列表推导式实现----
list3 = [i for i in range (10)] # 第一个i是返回值
print(list3)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

带if的列表推导式

# 需求:0-10偶数数据的列表

# 1.写个简单的列表推导式 range步长
list1 = [i for i in range (0,10,2)]
print(list1)#[0, 2, 4, 6, 8]

# 2.for循环加if 创建有规律的列表
list2 = []
for i in range (10):
    if i % 2 == 0:
       list2.append(i )
print(list2)#[0, 2, 4, 6, 8]

# 3.把for循环配合if的代码 改写 带if的列表表达式
list3 = [i for i in range (10) if i % 2 == 0]
print(list3)#[0, 2, 4, 6, 8]

多个for循环实现列表推导式

list1 = [(i, j) for i in range(1, 3) for j in range(3)]
print(list1)#[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

5.2 字典推导式

字典推导式作⽤:快速合并列表为字典或提取字典中⽬标数据
1.创建⼀个字典:字典key是1-5数字,value是这个数字的2次⽅。

dict1 = {i: i**2 for i in range(1, 5)}
print(dict1) # {1: 1, 2: 4, 3: 9, 4: 16}

2.将两个列表合并为⼀个字典

list1 = ['name', 'age', 'gender','id']
list2 = ['Tom', 20, 'man']

"""
dict1 = {list1[i] :list2[i] for i in range (len(list2))}
print(dict1)
"""

# 总结
# 1. 如果两个列表数据个数相同时,len统计任何一个列表长度都可以
# 2. 如果两个列表数据个数不同时,len统计数据多的列表个数会报错,len统计数据少的列表个数不会报错

# 还可以增加判断语句,比如
dict1 = {list1[i] :list2[i] for i in range (min(len(list1),len(list2)))}
print(dict1)#{'name': 'Tom', 'age': 20, 'gender': 'man'}
  1. 提取字典中⽬标数据
counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}

# 1.需求:提取电脑台数大于等于200
# 获取所有键值对数据,判断v值大于等于200 返回 字典
# print(counts.items())

dict1 = {key : value for key,value in counts.items() if value >= 200}
print(dict1)#{'MBP': 268, 'DELL': 201}

5.3 集合推导式

# 需求:创建一个集合,数据为下方列表的2次方
list1 = [1,2,1]
set1 = {i ** 2 for i in list1}
print(set1)#{1, 4}
# 去重
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值