Python 语法错误:一行中使用 if 时无效的语法

2 投票
1 回答
1131 浏览
提问于 2025-04-17 13:52

我尝试运行了关于Python是否有内置的字符串自然排序函数的接受答案,但出现了以下错误:

File " < stdin >", line 4

convert = lambda text: int(text) if text.isdigit() else text 


SyntaxError: invalid syntax

有人能帮忙吗?

谢谢大家...


更新:
感谢大家的回复。
我最开始把代码整合到我自己的脚本里,但出现了错误。然后我只是在Python的交互窗口测试了这个函数(就这一行),结果也出现了同样的错误。

我使用的是python/2.6.5。奇怪的是,这段代码在我另一台电脑上(Python 2.6.1)可以正常运行。这段代码是和版本有关吗?

1 个回答

-1

下面的代码在2.6.x版本中可以正常运行。

import re

li = ['elm1', 'elm0', 'Elm18', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']

def natural_sort(l): 
    convert = lambda text: int(text) if text.isdigit() else text.lower() 
    alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ] 
    return sorted(l, key = alphanum_key)

print natural_sort(li)

再试一次,使用复制和粘贴。

撰写回答