这是交易。我有嵌套的列表-列表的大部分是数字,但最后它们都有用来标识列表的字母。
例如:
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,但是当列表中也包含字母时,我不知道如何以一种简洁的方式进行操作。有任何想法吗?
答案 0 :(得分:1)
使用列表理解
例如:
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)
或
alist = [[0, -2, 3, 5, 10, -20, 'a'],[0, -4, 3, 30, 40, -15, 'a']]
res = []
for i in alist:
temp = []
for j in i:
if isinstance(j, str) or (j > 0):
temp.append(j)
else:
temp.append(0)
res.append(temp)
print(res)
输出:
[[0, 0, 3, 5, 10, 0, 'a'], [0, 0, 3, 30, 40, 0, 'a']]
注意:
isinstance
检查对象。