2024-05-15 11:30:05 发布
网友
我有一个包含数字和字符串值的列表,如下所示:
vals = ["1", "2", "A"]
我想用“0”替换此列表中的所有sting值。因此,新列表是:[“1”、“2”、“0”]
为什么这不起作用
[i for i in vals if str(i).isnumeric() else "0"]
这不是.isnumeric()的使用方式。 而是使用.isdigit():
[i for i in vals if str(i).isdigit() else "0"]
这是一个错误的语法为了理解,如果希望有条件地获得值,则应在for之前检查if else条件:
for
if else
>>> [i if str(i).isnumeric() else "0" for i in vals ] ['1', '2', '0']
但是,如果您只想拥有满足条件的值,那么只有您可以在for <item> in <iterator>之后拥有if,而不需要else部分,这类似于filter内置:
for <item> in <iterator>
if
else
filter
>>> [i for i in vals if str(i).isnumeric()] ['1', '2']
您的语法无效。在列表理解中使用if和else时,它们应该位于for循环之前
vals = ["1", "2", "A"] new=[i if str(i).isnumeric() else '0' for i in vals] print(new)
这不是.isnumeric()的使用方式。 而是使用.isdigit():
这是一个错误的语法为了理解,如果希望有条件地获得值,则应在
for
之前检查if else
条件:但是,如果您只想拥有满足条件的值,那么只有您可以在
for <item> in <iterator>
之后拥有if
,而不需要else
部分,这类似于filter
内置:您的语法无效。在列表理解中使用
if
和else
时,它们应该位于for
循环之前相关问题 更多 >
编程相关推荐