如何使用Python处理列表中的字符串项

2024-05-15 11:30:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含数字和字符串值的列表,如下所示:

vals = ["1", "2", "A"]

我想用“0”替换此列表中的所有sting值。因此,新列表是:[“1”、“2”、“0”]

为什么这不起作用

[i for i in vals if str(i).isnumeric() else "0"]

Tags: 字符串in列表forif数字elsestr
3条回答

这不是.isnumeric()的使用方式。 而是使用.isdigit():

[i for i in vals if str(i).isdigit() else "0"]

这是一个错误的语法为了理解,如果希望有条件地获得值,则应在for之前检查if else条件:

>>> [i if str(i).isnumeric() else "0" for i in vals ]
['1', '2', '0']

但是,如果您只想拥有满足条件的值,那么只有您可以在for <item> in <iterator>之后拥有if,而不需要else部分,这类似于filter内置:

>>> [i for i in vals if str(i).isnumeric()]
['1', '2']

您的语法无效。在列表理解中使用ifelse时,它们应该位于for循环之前

vals = ["1", "2", "A"]
new=[i if str(i).isnumeric() else '0' for i in vals]
print(new)

相关问题 更多 >