use*_*332 1 python list-comprehension python-3.x
寻求专家的帮助,以帮助我在创建的程序中做出正确的选择.创建列表的两种方法中哪一种看起来更像Pythonic并且对您可读?或者,有没有更好的方法可以做到这一点?
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']
Run Code Online (Sandbox Code Playgroud)
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']
Run Code Online (Sandbox Code Playgroud)
您正在映射错误的级别.使用像这样的字典:
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'))
Run Code Online (Sandbox Code Playgroud)
[
'Country name: United States',
'Country name: United Kingdom',
'Country name: United Arab Emirates',
'Country name: Unknown'
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |