Day13--杂记
🧸用字典映射代替switch case 语句:
# 方法 1
switcher = {
0: 'Sunday',
1: 'Monday',
2: 'Tuesday'
}
print('方法1.请输入:')
day = int(input())
# day_name = switcher[day] # 使用下标访问
day_name = switcher.get(day, 'Unknown') # 输入值若不存在,返回Unknown
print(day_name)
# 方法 2 使用函数方式
def get_sunday():
return 'Sunday'
def get_monday():
return 'Monday'
def get_tuesday():
return 'Tuesday'
def get_default():
return 'Unknown'
switcher1 = {
0: get_sunday,
1: get_monday,
2: get_tuesday
}
print('方法2.请输入:')
day1 = int(input())
# day_name = switcher[day] # 使用下标访问
day_name1 = switcher1.get(day1, get_default)() # 输入值若不存在,返回Unknown
print(day_name1)
🧸列表推导式:
# 列表推导式
a = [1, 2, 3, 4, 5, 6, 7, 8]
# i*i == i**2, i*i*i == i**3
b = [i*i for i in a]
print(b) # [1, 4, 9, 16, 25, 36, 49, 64]
# 条件筛选 a列表中 >=5的数字,平方后放入b
b = [i**2 for i in a if i >= 5]
print(b) # [25, 36, 49, 64]
# 集合set也可以被推倒
a = {1, 2, 3, 4, 5, 6, 7, 8}
b = [i**2 for i in a if i >= 5]
print(b) # [25, 36, 49, 64]
b = {i**2 for i in a if i >= 5}
print(b) # {64, 25, 36, 49}
# 同理 字典和元组也可以
🎈字典的列表推导式:
# 字典的列表推导式
students = {
'曹操': 28,
'刘备': 25,
'孙权': 18
}
b = {key for key,value in students.items()}
print(b) # {'刘备', '孙权', '曹操'}
# key, value 互换
b1 = {value: key for key, value in students.items()}
print(b1) # {28: '曹操', 25: '刘备', 18: '孙权'}
🧸空字符串 和 判空
'''
None 空
从 类型,值 讲 None 不等同于 空字符串、空列表 0 False
'''
a = 0
b = ''
c = []
d = False
print(a == None)
print(b == None)
print(c == None)
print(d == None)
# ------输出------
# False
# False
# False
# False
print(type(None)) # <class 'NoneType'>
# 判空操作
def fun():
return None
# a = fun()
a = []
if not a:
print('T')
else:
print('F')
if a is None:
print('T')
else:
print('F')
# 判空一般使用
'''
if a:
...
if not a:
'''
🧸注意误区:
🎈对象存在不一定是True:
# 对象存在不一定是True
# 对象默认是True
class Test():
pass
test = Test()
print(bool(test)) # True
if test:
print('T') # T
# -----------------------------------------------------
class Test1():
def __len__(self):
return 0
test1 = Test1()
print(bool(test1)) # False
if test1:
print('T') #
else:
print('F') # T
# 因为此时Test1() 返回值是0,所以test1的布尔值为False
# 类似的
class Test2():
def __bool__(self):
return False
test2 = Test2()
print(bool(test2)) # False
if test2:
print('T') #
else:
print('F') # T
🎈__len__
与 __bool__
内置方法
class Test():
def __len__(self):
return True # __len__函数可以返回 True or False
# 此时的打印输出结果取决于 __len__函数
print(bool(Test())) # True
print(len(Test())) # 1
class Test1():
def __len__(self):
return 8
def __bool__(self):
return False # __bool__函数 不可以返回0 or 1
# 此时的打印输出结果取决于 __bool__函数
print(bool(Test1())) # False
print(len(Test1())) # 8
Python 基础与进阶到了这里就结束了
敬请期待 Python进阶与强化
QWQ