Python(十二) Pythonic与Python杂记

一、导言
二、用字典映射代替switch case语句
 
# 字典代替 switch 语句

# switch ()
# {
#   case 0 :
#     dayName= 'a';
#     break;
#   case 1 :
#     dayName= 'b';
#     break;
#   case 2 :
#     dayName= 'c';
#     break;
#     ...
#   default :
#     dayName= 'none';
#     break;
# }
def get_a():
    return 'a'
    
def get_b():
    return 'b'

def get_c():
    return 'c'

def get_default():
    return 'none'

day=2
switcher = {
    0:get_a,
    1:get_b,
    2:get_c
    }

day_name=switcher.get(day, get_default)()
print(day_name)

day_name=switcher.get(6, get_default)()
print(day_name)

结果:
c
none
三、列表推导式
 
# 列表推导式(根据一个列表推到一个新的列表)list set dict 都可以被推导

a = [1,2,3,4,5,6,7,8]

b = [i**3 for i in a]
print(b) # [1, 8, 27, 64, 125, 216, 343, 512]

b = [i**3 for i in a if i>=5]
print(b) # [125, 216, 343, 512]

list =[y for x in range(5) for y in range(2)]
print(list) # [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
a = {1,2,3,4,5,6,7,8}

b = {i**3 for i in a}
print(b) # {64, 1, 512, 8, 343, 216, 27, 125}
四、字典如何编写列表推导式
students = {
    '一号':100,
    '二号':90,
    '三号':80
}

b = [key for key, value in students.items()]
print(b) # ['一号', '二号', '三号']

b = {value:key for key, value in students.items()}
print(b) # {100: '一号', 90: '二号', 80: '三号'}

b = (key for key, value in students.items())
print(b) # <generator object <genexpr> at 0x00000187AB059410>
for x in b:
    print(x) 

# 一号
# 二号
# 三号
五、 iterator与generator
六、 None
# None  空 不等于 空字符串 空列表 0 False

a = ''
b = False
c = []

print(a==None)
print(b==None)
print(c==None)
print(type(None))

# False
# False
# False
# <class 'NoneType'>

判断空
a=[] /func() / ''

if a:

if not a:
七、对象存在并不一定是True
None 等于 False
class Test():
    def __len__(self):
        return 0

t = Test()
print(bool(t)) # False

class Test1():
    pass
    
t = Test1()
print(bool(t)) # True
八、__len__与__bool__内置方法
class Test():
    def __len__(self):
        return 8
    # def __bool__(self):
    #     return 0

print(len(Test())) # 8
print(bool(Test())) # True
 
class Test():
    def __len__(self):
        print('len func')
        return 8
    def __bool__(self):
        print('bool func')
        return False

print(bool(Test())) 

# bool func
# False
 




原文地址:https://www.cnblogs.com/zhangtaotqy/p/9507344.html