Python 检查字符串列表中最后一个字符的多个if/else条件
我有这个清单Python 检查字符串列表中最后一个字符的多个if/else条件,python,Python,我有这个清单 num_list=["mille", "duemila", "tremila", "quattromila", "cinquemila", "seimila", "settemila", "ottomila", "novemila", "diecimila", "milione", "miliardo", "milioni",'miliardi','mila'] 我想建立以下列表 output=['millesimo', 'duemillesimo','tremillesimo'
num_list=["mille", "duemila", "tremila", "quattromila", "cinquemila", "seimila", "settemila", "ottomila", "novemila", "diecimila", "milione", "miliardo", "milioni",'miliardi','mila']
我想建立以下列表
output=['millesimo', 'duemillesimo','tremillesimo','quattromillesimo','cinquemillesimo','seimillesimo','settemillesimo', 'ottomillesimo', 'novemillesimo', 'diecimillesimo', 'milionesimo', 'miliardesimo', 'milionesimo','miliardesimo']
从每个字符串中删除最后一个字符后,应按照以下条件进行构建:
- 如果单词是“
”,什么也不要做李>mila
- 如果单词以“
”结尾,则添加“l
”李>lesimo
- else(如果删除最后一个字符后字符串的最后两个字符为“
”或字符串为“ll
”、“milion
”),则添加“miliard
”李>esimo
numeri_card_esimo = [x[:-1] + 'lesimo' if x[:-2] == 'll' else x[:-1] + 'esimo' for x in numeri_card_esimo]
输出与我想要的不太接近:
['millesimo',
'duemilesimo', # it should be duemillesimo
'tremilesimo', # same as above
'quattromilesimo', # same as above
'cinquemilesimo', # same as above
'seimilesimo', # same as above
'settemilesimo', # same as above
'ottomilesimo', # same as above
'novemilesimo', # same as above
'diecimilesimo', # same as above
'milionesimo',
'miliardesimo',
'milionesimo',
'milesimo'] # it should be excluded
但由于错误地使用了
if/else
条件,因此它不起作用。我应该如何编写这些条件?在我看来,您试图应用的逻辑在列表理解中使用有点长。为了可读性,最好将其移动到函数中
def convert(num):
num = num[:-1]
if num[-2:]=='ll' or num=='milion' or num=='miliard':
num = num + 'esimo'
elif word[-1]=='l':
num = num + 'lesimo'
return num
num_list=["mille", "duemila", "tremila", "quattromila", "cinquemila", "seimila", "settemila", "ottomila", "novemila", "diecimila", "milione", "miliardo", "milioni",'miliardi','mila']
# Remove mila occurrences
num_list = [num for num in num_list if num!='mila']
output = [convert(num) for num in num_list]
print(output)
如果你提到它到底是如何不起作用的,那会有帮助的。比如,有错误吗?输出是否不是您所期望的?请参阅以供参考。您在三个地方有两个非常明显的语法错误。这就是你要问的吗?如果没有的话,请等你把它们修好,我会撤消我的否决票。对不起,简德里亚,但我不同意你的意见。我添加了我正在使用的数据、预期输出和包含“明显语法错误”的代码,我知道这些错误存在,但我不知道如何修复它们(否则我想我不会问这个问题)。我认为这是if/else的错误用法。我发布了一些应该被复制的东西(数据),应该被修复的代码,以及预期的输出。如果您需要任何东西,请告诉我,但我认为这是一个最小的可复制示例。无论如何,您现在已经修复了一个语法错误,这很好。另一个是在
x[:-1]=“e”
和x[:-1]=“o”
。equals=
应该是一个双equals=
。我认为这一个很接近,但如果将其分解为“经典”if-else格式并重新构建为三值格式,它将受益匪浅。