使用for循环和random choice重排列表时元素拆分问题求助
问题分析与解决
你的代码存在两个关键问题:
- 列表
+=操作的行为误解:当执行b += random.choice(a)时,random.choice(a)返回的是单个字符串(比如sai),而+=会将字符串视为可迭代对象,把它拆分成单个字符逐个添加到列表b中,这就是结果是单个字符列表的原因。 - 方法名大小写错误:
random.Choice是错误写法,Python标准库中该方法是小写的random.choice(大写写法会直接报错,推测你实际运行时可能修正了这个笔误,但代码里的错误需要纠正)。
修正后的代码
第一种写法(推荐用append直接添加元素):
import random a = ['sai','raju','phani'] b = [] for _ in a: b.append(random.choice(a)) print(b)
第二种写法(用+=但包装成列表):
import random a = ['sai','raju','phani'] b = [] for _ in a: b += [random.choice(a)] print(b)
两种写法都会输出类似['sai','sai','raju']的完整字符串列表,符合你的预期。
内容的提问来源于stack exchange,提问作者raju
相关产品推荐
相关产品推荐

