You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:基于列表值实现Pythonic风格的列表拼接单行代码

Pythonic单行实现列表拼接方案

嘿,这需求用Python一行代码就能优雅解决!核心思路是利用迭代器的惰性特性,配合列表推导式完成替换逻辑,完全贴合Pythonic的风格。

直接上可运行的单行代码:

result = [next(v) if x == 1 else x for x, v in zip([0, 1, 1, 0, 0, 1, 1, 1, 0, 1], [iter(['a', 'b', 'c', 'd', 'e', 'f'])]*10)]

如果先定义变量,代码可读性会更好(同样是单行写法):

mask, values = [0,1,1,0,0,1,1,1,0,1], ['a','b','c','d','e','f']; result = [next(v) if x ==1 else x for x,v in zip(mask, [iter(values)]*len(mask))]

逻辑拆解:

  • iter(values) 创建一个针对values列表的迭代器,它的特性是每次调用next()会取出下一个元素,不会重复取值;
  • [iter(values)]*len(mask) 是把同一个迭代器对象重复多次,这样在zip遍历过程中,每遇到mask里的1,都会调用这个迭代器的next(),从而依次取出values里的元素,刚好匹配mask中1的数量(这里正好6个1对应values的6个元素);
  • 列表推导式遍历mask的每个元素,判断是否为1:是则替换为迭代器的下一个元素,否则保留原0。

运行后得到的结果完全符合你的预期:

[0, 'a', 'b', 0, 0, 'c', 'd', 'e', 0, 'f']

这种方法既简洁高效,又充分利用了Python的语言特性,完美满足你的需求~

内容的提问来源于stack exchange,提问作者klamtd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:40:11