Python字符串按3位拆分替换中间字符后排序问题求助
完整实现代码
import random import string # 原始输入字符串 input_str = "Geeksforgeek" segment_length = 3 # 第一步:拆分字符串为3字符片段 # 可提前加校验:assert len(input_str) % 3 == 0, "字符串长度需为3的倍数" segments = [input_str[i:i+segment_length] for i in range(0, len(input_str), segment_length)] # 第二步:替换每个片段的中间字符 char_pool = string.ascii_letters # 随机字符池,可按需修改为包含数字、符号等 processed_list = [] for seg in segments: # 仅处理长度为3的片段,不足3的可按需选择丢弃、补齐等逻辑 if len(seg) != 3: continue existing_chars = set(seg) # 生成和当前片段所有字符都不重复的随机字符 while True: random_mid = random.choice(char_pool) if random_mid not in existing_chars: break # 替换中间位(索引为1的位置)生成新片段 new_seg = seg[0] + random_mid + seg[2] processed_list.append(new_seg) # 第三步:按字母顺序排序,需忽略大小写可改成 processed_list.sort(key=str.lower) processed_list.sort() print(processed_list)
逻辑说明
- 片段长度兼容:如果你的需求要求必须所有片段都是3位,可提前加长度校验,避免出现长度不足的片段;如果允许不足3位的片段保留,可自行调整对应位置的替换逻辑。
- 随机字符范围:可修改
char_pool的取值调整随机字符的可选范围,比如string.ascii_letters + string.digits就可以同时包含大小写字母和数字。 - 排序规则:默认按ASCII编码顺序排序,区分大小写,需要忽略大小写可修改sort方法的key参数。
内容的提问来源于stack exchange,提问作者otoo
相关产品推荐
相关产品推荐

