代码之家  ›  专栏  ›  技术社区  ›  user9074332

Python3有助于确定动态创建列表的大多数python方法

  •  1
  • user9074332  · 技术社区  · 7 年前

    在这里寻求专家的帮助,帮助我在一个项目中做出正确的选择,我正在创建。两种创建列表的方法中,哪一种对您来说更具吸引力和可读性?还是有更好的办法让我这么做?

    方法#1-列表理解

    def test_func(*args):
        s = 'Country name: United {nm}'
        l = [s.format(nm='States') if x is 'us' 
             else s.format(nm='Arab Emirates') if x is 'uae'
             else s.format(nm='Kingdom') if x is 'uk' 
             else 'Unknown' for x in args]
        return l
    
    # execute
    test_func('us', 'uk', 'uae')
    
    # results
    ['Country name: United States',
     'Country name: United Kingdom',
     'Country name: United Arab Emirates']
    

    进近#2-用于环路

    def test_func(*args):
        s = 'Country name: United {nm}'
        l = []
        for arg in args:
            if arg is 'us':
                l.append(s.format(nm='States'))
            elif arg is 'uk':
                l.append(s.format(nm='Kingdom'))
            elif arg is 'uae':
                l.append(s.format(nm='Arab Emirates'))
            else:
                l.append(s.format(nm='Unknown'))
        return l
    
    # execute
    test_func('us', 'uk', 'uae')
    
    # results
    ['Country name: United States',
     'Country name: United Kingdom',
     'Country name: United Arab Emirates']
    
    1 回复  |  直到 7 年前
        1
  •  6
  •   Stephen Rauch Afsar Ali    7 年前

    您在错误的级别映射。使用类似以下的口述:

    def test_func(*args):
        mapping = {
            'us': 'United States',
            'uae': 'United Arab Emirates',
            'uk': 'United Kingdom',
        }
        return ['Country name: {}'.format(mapping.get(x, 'Unknown')) for x in args]
    
    # execute
    print(test_func('us', 'uk', 'uae', 'xyzzy'))
    

    结果:

    [
        'Country name: United States', 
        'Country name: United Kingdom', 
        'Country name: United Arab Emirates',
        'Country name: Unknown'
    ]