如何实现将列表每个元素的末尾字符移动到下一个元素的开头
列表元素末尾字符转移到下一元素开头的实现方法
转换逻辑说明:将列表内前N-1个元素的最后一个字符,作为下一个元素的前缀拼接,同时前N-1个元素仅保留除末尾字符外的内容,最后一个元素无需截断,直接拼接前一个元素传递的末尾字符即可。
输入示例:
['HelloM','yN','ameI','sB','ob']
输出示例:['Hello','My','Name','Is','Bob']
实现代码
1. 基础循环实现(逻辑清晰,易读性高)
def shift_last_char(input_list): # 兼容空列表输入 if not input_list: return [] result = [] # 存储上一个元素的末尾字符,第一个元素无前缀,初始为空 carry_char = "" for index, item in enumerate(input_list): # 非末尾元素需要截断最后一位,同时将最后一位暂存给下一个元素 if index != len(input_list) - 1: current_item = carry_char + item[:-1] carry_char = item[-1] # 末尾元素无需截断,直接拼接前缀即可 else: current_item = carry_char + item result.append(current_item) return result # 测试调用 test_input = ['HelloM','yN','ameI','sB','ob'] print(shift_last_char(test_input)) # 输出结果:['Hello', 'My', 'Name', 'Is', 'Bob']
2. 简洁写法(适合熟练场景使用)
test_input = ['HelloM','yN','ameI','sB','ob'] # 提取所有前缀字符,首个元素前缀为空 prefix_list = [''] + [item[-1] for item in test_input[:-1]] # 拼接生成结果列表 result = [prefix + item[:-1] if idx != len(test_input)-1 else prefix + item for idx, (prefix, item) in enumerate(zip(prefix_list, test_input))] print(result) # 输出结果同上
边界情况兼容
上述代码已自动处理如下特殊场景:
- 输入为空列表,直接返回空列表
- 输入列表仅包含1个元素,直接返回原列表
- 列表内存在长度为1的元素,也可正常转换
内容的提问来源于stack exchange,提问作者EpicMate
相关产品推荐
相关产品推荐

