如何使用条件生成列表理解,其中条件是 NameError

How to generate a list comprehension with a conditional where the conditional is a NameError

假设有以下列表:

l = ['1','2','M']

如何通过列表理解将 l 转换为 l_1

l_1 = [1, 2, 'M']

我尝试了以下但没有成功。

[eval(c) if eval(c) not NameError else c for c in l]

  File "<ipython-input-241-7c3f63ffe51b>", line 1
    [eval(c) if c not NameError else c for c in list(a)]
                      ^
SyntaxError: invalid syntax

假设您的一般情况是这样的,您可以使用 isdigit 仅转换数字。

l=['1','2','M']
l1=[int(c) if c.isdigit() else c for c in l]

嗨,

您可以将列表 l 中的每个元素验证为字符串,即使您已经有一些数字,例如 l = ['1','2','M',3,'p'],这样你就可以通过将它们全部传递给字符串然后验证元素是否为数字来进行验证,如果是,则将其传递给 int、float 或数字给新的 l_1 和如果不是,您只需将其作为字符串传递。在这种情况下,我会将每个数字元素转换为 int,但您可以选择将其传递给任何其他类型的数字,例如 float,例如,如果列表包含浮动元素。

l = ['1','2','M',3,'p']
l_1 = [int(el) if str(el).isdigit() else el for el in l]
print(l_1)

我当然希望这会有所帮助,祝你好运并继续编码,它总是很有趣!