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

Python列表条件拼接:如何将$与后续元素合并生成新列表?

最优实现方案

嘿,针对这个把$和后续元素合并的需求,最直观且高效的方法是一次遍历原列表——毕竟咱们要追求O(n)的时间复杂度嘛!这种方法只需要扫一遍列表就能完成处理,逻辑也清晰好维护。

方法一:while循环遍历(易读性拉满)

data = ['Cost', '$', 4244, '$', 4090, '$', 3967]
result = []
i = 0
total_length = len(data)

while i < total_length:
    # 遇到$且后面还有元素时,拼接两者
    if data[i] == '$' and i + 1 < total_length:
        # 把数字转成字符串和$拼接,加入结果列表
        result.append(f"{data[i]}{data[i+1]}")
        i += 2  # 跳过下一个元素,避免重复处理
    else:
        # 不是$或者$在列表末尾,直接加入结果
        result.append(data[i])
        i += 1

print(result)  # 输出: ['Cost', '$4244', '$4090', '$3967']

这个方法的优势很明显:

  • 只遍历一次列表,处理大列表时效率优势突出
  • 逻辑直白,哪怕是新手也能一眼看懂
  • 自动处理边界情况(比如列表最后一个元素是$的话,会直接保留单独的$,不会报错)

方法二:迭代器+for循环(代码更紧凑)

如果你喜欢更简洁的代码,可以用Python的迭代器特性,利用next()方法直接取下一个元素,代码会更短:

data = ['Cost', '$', 4244, '$', 4090, '$', 3967]
data_iter = iter(data)
result = []

for item in data_iter:
    if item == '$':
        # 遇到$就取下一个元素拼接
        result.append(f"{item}{next(data_iter)}")
    else:
        result.append(item)

print(result)

这个方法本质和while循环是一样的,时间复杂度也是O(n),只是写法更紧凑,适合喜欢精简代码的同学。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:18:49