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

如何实现将列表每个元素的末尾字符移动到下一个元素的开头

列表元素末尾字符转移到下一元素开头的实现方法

转换逻辑说明:将列表内前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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:15:03