Python中如何用列表推导式拆分正负数值列表为两个新列表?
解决方法
你完全可以用列表推导式实现,两行代码就能搞定:
假设原列表叫original_list,示例如下:
original_list = [3, -2, 5, -7, 0, 12, -4] # 示例列表,实际为96个元素
生成第一个列表(保留正数,原负数/0位置替换为0):
positive_list = [x if x > 0 else 0 for x in original_list]
生成第二个列表(保留负数,原正数/0位置替换为0):
negative_list = [x if x < 0 else 0 for x in original_list]
逻辑解释
- 列表推导式的核心逻辑是遍历原列表的每个元素
x,通过条件判断返回对应值:- 对于
positive_list,仅当x为正数(x > 0)时保留原数值,其余情况返回0; - 对于
negative_list,仅当x为负数(x < 0)时保留原数值,其余情况返回0;
- 对于
- 若原列表包含0,两个新列表的对应位置都会是0,完全符合需求。
测试示例代码的输出结果:
print(positive_list) # 输出: [3, 0, 5, 0, 0, 12, 0] print(negative_list) # 输出: [0, -2, 0, -7, 0, 0, -4]
这种写法简洁高效,能适配任意长度的列表,包括你说的96个元素的场景。
内容的提问来源于stack exchange,提问作者Handballer73
相关产品推荐
相关产品推荐

