Python 解包列表以用于格式化字符串



>我有一个基于用户输入动态创建的字符串。我正在使用 Python 中的 .format 函数将列表添加到字符串中,但我想在打印时删除引号和括号。

我试过:

return (('{} is {}x effective against {}').format(opponentType, overallHitMultiplier, [str(x) for x in playerTypes]))

return return (('{} is {}x effective against {}').format(opponentType, overallHitMultiplier, playerTypes))

两者都返回如下所示的字符串:

fighting is 2x effective against ['normal', 'ghost']

但我希望它返回类似以下内容:

fighting is 2x effective against normal, ghost

列表的长度是可变的,所以我不能一个接一个地插入列表元素。

这是一个更完整的响应:

def convert_player_types_to_str(player_types):
n = len(player_types)
if not n:
return ''
if n == 1:
return player_types[0]
return ', '.join(player_types[:-1]) + f' and {player_types[-1]}'
>>> convert_player_types_to_str(['normal'])
'normal'
>>> convert_player_types_to_str(['normal', 'ghost'])
'normal and ghost'
>>> convert_player_types_to_str(['normal', 'ghost', 'goblin'])
'normal, ghost and goblin'