如何在Python列表中快速交换0和1(非numpy实现)
不使用numpy时交换Python列表中0和1的最快方法
如果你的列表只包含0和1,最快的实现方式是用列表推导式结合算术运算:
original = [0, 1, 0, 1, 1, 0] swapped = [1 - x for x in original]
这种方法依赖底层C实现的遍历逻辑,比Python层面的循环快得多,且1 - x的计算几乎没有额外开销,是纯0/1列表场景下的最优解。
如果列表中存在0和1之外的其他元素,需要仅交换0和1、保留其余元素,同样用列表推导式实现效率最高:
original = [0, 1, 2, 0, 3, 1] swapped = [1 if x == 0 else 0 if x == 1 else x for x in original]
你也可以用map函数配合lambda表达式实现,代码更简洁,但效率略低于列表推导式:
# 仅含0和1的场景 swapped = list(map(lambda x: 1 - x, original)) # 兼容其他元素的场景 swapped = list(map(lambda x: 1 if x ==0 else 0 if x ==1 else x, original))
实测显示,列表推导式的执行速度普遍快于手动for循环逐个修改元素——它避开了Python解释器对循环语句的反复解析,直接调用底层高效的遍历逻辑。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

