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

如何用随机字母生成独立指定长度单词列表?Python代码迭代叠加问题求助

问题:生成独立随机单词时出现内容叠加

尝试生成由随机字母组成的单词列表,单词长度随机取1、4、7或2,但运行代码后生成的单词会叠加前一次的内容,得到类似['TUKD', 'TUKDLH', 'TUKDLHKN', 'TUKDLHKNU', 'TUKDLHKNUGUEI']的结果,期望每个单词完全独立不叠加。

原代码如下:

import random

alphabet = []
for i in range(65,91):
    alphabet.append(chr(i))

letter_count = [1,4,7,2]
empty_letter=[]
empty_word = [] 


def generate_word(number):
    for i in range(0,number):
        empty_letter.append(random.choice(alphabet))
    return("".join(empty_letter))  

for i in range(5):
    empty_word.append(generate_word(random.choice(letter_count)))
    

print(empty_word)

错误原因

empty_letter是全局定义的列表,每次调用generate_word函数时,都会往这个全局列表里追加字母,导致后续生成的单词会包含之前所有迭代的字母,最终出现叠加效果。

修复方案

将empty_letter移到generate_word函数内部,每次调用函数时创建一个新的空列表,这样每个单词的生成过程都是独立的,不会互相干扰。

修复后的代码:

import random

alphabet = []
for i in range(65,91):
    alphabet.append(chr(i))

letter_count = [1,4,7,2]
empty_word = [] 


def generate_word(number):
    empty_letter = []  # 移到函数内部,每次调用都新建列表
    for i in range(number):
        empty_letter.append(random.choice(alphabet))
    return("".join(empty_letter))  

for i in range(5):
    empty_word.append(generate_word(random.choice(letter_count)))
    

print(empty_word)

另外还可以简化代码,用列表推导式和生成器表达式让代码更简洁:

import random

alphabet = [chr(i) for i in range(65, 91)]
letter_count = [1,4,7,2]
empty_word = [] 

def generate_word(number):
    return "".join(random.choice(alphabet) for _ in range(number))

for _ in range(5):
    empty_word.append(generate_word(random.choice(letter_count)))

print(empty_word)

内容的提问来源于stack exchange,提问作者Will Vaught

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:25:02