python-3.x - 在也有字母的列表中将负值变为 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,但是当列表中也存在字母时,我不知道如何以一种简洁的方式做到这一点。有任何想法吗?
解决方案
使用列表推导
前任:
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
检查对象。
推荐阅读
- bash - 如何停止 bash 引用引号?
- arrays - 如何将 Go 结构的一部分定义为 JSON 字符串?
- python - 在创建模型时将用户添加到多对多字段
- python - 如何在文本框中包含绘图线型图例的图像
- kaitai-struct - Kaitai Struct中外部ksy文件中引用Kaitai Struct文件(ksy)
- c# - 数据库集
没有MyModel的物理表时,属性得到空值? - python - 如何使用 statsmodels.formula 测试 SLR 中的回归系数是否相等?
- javascript - 使传单插件可作为导入或直接从 html 标头使用
- sql - 在多选中执行求和
- javascript - 最佳异步 JavaScript 扩展初始化设计模式