Python 3.x 将同样包含字母的列表中的负值转换为0

Python 3.x 将同样包含字母的列表中的负值转换为0,python-3.x,if-statement,nested-lists,Python 3.x,If Statement,Nested Lists,这就是交易。我有嵌套列表-列表的大部分是数字,但在最后有字母,用于标识列表 例如: alist = [[0, -2, 3, 5, 10, -20, 'a'],[0, -4, 3, 30, 40, -15, 'a']] 我希望将其转化为: alist = [[0, 0, 3, 5, 10, 0, 'a'],[0, 0, 3, 30, 40, 0, 'a']] 我知道如何使用if语句和for循环将负值转换为0,但当列表中也有字母时,我不知道如何以简洁的方式执行此操作。有什么想法吗 使用列表理解

这就是交易。我有嵌套列表-列表的大部分是数字,但在最后有字母,用于标识列表

例如:

alist = [[0, -2, 3, 5, 10, -20, 'a'],[0, -4, 3, 30, 40, -15, 'a']]
我希望将其转化为:

alist = [[0, 0, 3, 5, 10, 0, 'a'],[0, 0, 3, 30, 40, 0, 'a']]

我知道如何使用if语句和for循环将负值转换为0,但当列表中也有字母时,我不知道如何以简洁的方式执行此操作。有什么想法吗

使用列表理解

Ex:

alist = [[0, -2, 3, 5, 10, -20, 'a'],[0, -4, 3, 30, 40, -15, 'a']]
res = [[j if (isinstance(j, str) or (j > 0)) else 0 for j in i ]for i in alist]
print(res)
[[0, 0, 3, 5, 10, 0, 'a'], [0, 0, 3, 30, 40, 0, 'a']]

输出:

alist = [[0, -2, 3, 5, 10, -20, 'a'],[0, -4, 3, 30, 40, -15, 'a']]
res = [[j if (isinstance(j, str) or (j > 0)) else 0 for j in i ]for i in alist]
print(res)
[[0, 0, 3, 5, 10, 0, 'a'], [0, 0, 3, 30, 40, 0, 'a']]
注意:

alist = [[0, -2, 3, 5, 10, -20, 'a'],[0, -4, 3, 30, 40, -15, 'a']]
res = [[j if (isinstance(j, str) or (j > 0)) else 0 for j in i ]for i in alist]
print(res)
[[0, 0, 3, 5, 10, 0, 'a'], [0, 0, 3, 30, 40, 0, 'a']]
  • 使用
    isinstance
    检查对象
谢谢,我本来是朝着正确的方向走的,但却惨遭失败。干杯