Skip to main content
 首页 » 编程设计

Python3 帮助确定动态创建列表的大多数 pythonic 方法

2025年05月04日14kuangbin

向这里的专家寻求帮助,以帮助在我正在创建的程序中做出正确的选择。两种创建列表的方法中哪一种对您来说更像 Pythonic 和可读性更强?还是有更好的方法可以做到这一点?

方法 #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 - for 循环

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'] 

请您参考如下方法:

您在错误的级别进行映射。使用像这样的字典:

代码:

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' 
]