如何从列表中各单词的对应位置字母构建目标字符串?
问题解决:按位置提取单词字符构建字符串
原代码问题分析
你的代码存在两个核心问题:
- 外层循环范围错误:你用
range(len(my_list))仅循环3次(对应列表元素个数),但最长单词father长度为6,需要循环6次才能覆盖所有字符位置,这直接导致输出缺少了后面的dher部分。 - 未处理索引越界风险:当循环到超过短单词长度的位置时(比如i=3时,
bad只有3个字符),直接取my_list[j][i]会触发索引错误,同时也不符合只提取存在字符的需求。
修正后的代码
def letters(my_list): string = '' # 获取列表中最长单词的长度,作为外层循环的次数 max_len = max(len(word) for word in my_list) # 遍历每个字符位置 for i in range(max_len): # 遍历每个单词,提取对应位置的字符(如果存在) for word in my_list: if i < len(word): string += word[i] return string print(letters(['good', 'bad', 'father'])) # 输出:gbfoaaodtdher
代码说明
- 先通过
max(len(word) for word in my_list)获取最长单词的长度,确保外层循环能覆盖所有需要提取的字符位置。 - 内层循环遍历每个单词时,先判断当前位置
i是否在单词的长度范围内,避免索引越界的同时,只提取存在的字符。
内容的提问来源于stack exchange,提问作者alixon
相关产品推荐
相关产品推荐

