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
相关产品推荐
相关产品推荐

