Ищите помощь от экспертов здесь, чтобы помочь сделать правильный выбор в программе, которую я создаю. Какой из двух подходов для создания списка выглядит более питоническим и читаемым для вас? Или есть лучший способ, которым я мог бы это сделать?
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']
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']
Вы настроены на неверный уровень. Используйте dict так:
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'
]
.get
для обработки «неизвестного» случая OP?
is
для сравнения строк. Смотрите здесь на разницу междуis
и==
.dict
, как и ответ ниже, но в целом вложенные условные выражения не очень удобочитаемы для IMO. Петли For в значительной степени всегда питонны.