zoukankan      html  css  js  c++  java
  • 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
     




  • 相关阅读:
    Milk 结构体
    Milk 结构体
    Repeating Decimals, ACM/ICPC World Finals 1990, UVa202
    Repeating Decimals, ACM/ICPC World Finals 1990, UVa202
    DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368
    DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368
    Crossword Answers, ACM/ICPC World Finals 1994, UVa232
    【编程技巧】 iOS 5的StoryBoard(故事板)的一些用法
    【开发技术】storyboard和nib的差别
    【编程技巧】ExtJs 设置GridPanel表格文本垂直居中
  • 原文地址:https://www.cnblogs.com/zhangtaotqy/p/9507344.html
Copyright © 2011-2022 走看看