python进阶

本文介绍了如何使用Python字典来实现类似switch的效果,并详细讲解了列表推导式的运用,包括如何根据规则转化列表内容、添加推导条件以及对不同数据类型的操作。同时,还提到了类的方法在Python编程中的应用。
摘要由CSDN通过智能技术生成

用字典实现switch效果

'''
用dict实现switch的效果
'''
def getOne():
    return "One"

def getTwo():
    return "Two"

def getThree():
    return "Three"

def getDefault():
    return "Default"

switcher = {
    1 : getOne,
    2 : getTwo,
    3 : getThree
}
day = 1

if __name__ == "__main__":
    numStr = switcher.get(day, getDefault)() # 利用字典的get方法,当get到对应的字典的时候,就会访问对应的函数名,后边带个括号,就可以调用方法了,如果传入的key没有对应的值的时候,就会调用默认方法
    print(numStr)

列表推导式

  • 列表推导式可以把一个列表的内容按照一定的规则转化到新的列表中
  • 列表推导式可以添加推到条件,决定对哪些数据进行推导计算
  • 列表推导式不仅仅是可以对列表进行操作,它可以对列表、字典、集合等进行推导,而且可以通过修改中括号/大括号来实现不同类型之间的转换
'''
列表推导式
'''
a = [1,2,3,4,5,6]
b = [i**2 for i in a]
print(b) # [1, 4, 9, 16, 25, 36]
c = [i**2 for i in a if i < 4]
print(c) # [1, 4, 9] 可以在列表推导式中添加条件
d = {i**2 for i in a}
print(d) # {1, 4, 36, 9, 16, 25} 可以把列表推导成集合
'''
列表推导式-字典
'''
a = {
    '剑圣':'易大师',
    '蛮族之王':'泰达米尔',
    '诡术妖姬':'乐芙兰'
}
# b = [key for key, value in a] # 报错,因为字段是无序的,所以不能 直接遍历
c = [key for key, value in a.items()]  
print(c) # ['剑圣', '蛮族之王', '诡术妖姬']
d = {key for key, value in a.items()} 
print(c) # {'剑圣', '蛮族之王', '诡术妖姬'}
e = {value:key for key, value in a.items()} # 实现key和value的互换
print(e) # {'易大师': '剑圣', '泰达米尔': '蛮族之王', '乐芙兰': '诡术妖姬'}

类的__len__方法

class Test():
    def __len__(self): # 定义用于计算类长度的方法,此方法允许返回int、bool类型,如果没有定义这个方法,那么调用len(Test)就会报错
        return True

if __name__ == "__main__":
    print(len(Test())) # 1  返回__len__方法的返回值,如果返回的是bool类型,那么就显示0或1
    print(bool(Test())) # True  __len__方法可以决定bool的结果
class Test():
    def __len__(self): 
        return True
    def __bool__(self): # 定义用于获取类的bool类型方法,此方法只允许返回bool类型,不能返回其他类型
        return False
if __name__ == "__main__":
    print(bool(Test())) # False 当类中没有定义__bool__方法的时候,会取__len__方法的值作为返回值,如果定义了__bool__方法,则取__bool__方法的返回值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值