Python中如何根据指定数字序列调整字符串内字符的位置?
Python根据数字序列调整字符串字符位置的实现方法
完全可以实现,核心逻辑是将输入的1-based数字序列转换为Python字符串兼容的0-based索引,按索引依次取原字符串字符拼接即可。
实现原理
你给出的示例中数字序列为1-based索引规则:数字n对应原字符串的第n位字符,Python字符串默认使用0-based索引,只需将每个数字减1即可匹配原生索引规则。
以你给出的示例验证:
原字符串:
"ABCDEFG"→ 0-based索引对应关系:0:A、1:B、2:C、3:D、4:E、5:F、6:G
数字序列:"1346527"→ 转换为0-based索引:[0,2,3,5,4,1,6]
按索引取字符拼接结果:A + C + D + F + E + B + G = "ACDFEBG",和你预期的输出完全一致。
代码实现
版本1:数字序列为字符串类型
def rearrange_by_sequence(original_str: str, num_seq: str) -> str: return "".join([original_str[int(num) - 1] for num in num_seq]) # 测试示例 s = "ABCDEFG" seq = "1346527" print(rearrange_by_sequence(s, seq)) # 输出结果:ACDFEBG
版本2:数字序列为整数列表
如果输入的数字序列是[1,3,4,6,5,2,7]格式的整数列表,直接调整转换逻辑即可:
def rearrange_by_sequence(original_str: str, num_seq: list[int]) -> str: return "".join([original_str[num - 1] for num in num_seq])
注意事项
- 需保证数字序列长度和原字符串长度一致,避免出现索引越界、字符遗漏问题
- 数字序列内的所有数值需在
1 ~ 原字符串长度范围内,且无重复值,否则会触发索引错误或出现重复字符 - 如果你使用的数字序列本身就是0-based规则,直接去掉代码中
-1的逻辑即可使用
内容的提问来源于stack exchange,提问作者Dino Poljic
相关产品推荐
相关产品推荐

