random.shuffle返回None,如何获取打乱后的列表?
解决random.shuffle()返回None的问题
random.shuffle() 是原地修改列表的方法——它会直接打乱传入的列表本身,不会返回新的打乱后列表,函数执行完毕后返回值固定为None,这就是你打印shufflegen得到None的原因。
你可以通过两种方式获取打乱后的列表:
方式1:直接使用被原地修改的原列表
既然random.shuffle()已经修改了genwords,直接打印原列表即可:
import random testlist1 = ["1", "2"] testlist2 = ["1a", "1b"] testlist3 = ["2a", "2b"] def generator(testlist1, testlist2, testlist3): genwords = [random.choice(testlist1), random.choice(testlist2), random.choice(testlist3)] random.shuffle(genwords) # 原地打乱genwords print(genwords) # 直接输出被修改后的原列表 generator(testlist1, testlist2, testlist3)
方式2:使用random.sample()获取新的打乱列表
如果不想修改原genwords,可以用random.sample(),它会返回一个全新的打乱后列表,原列表保持不变:
import random testlist1 = ["1", "2"] testlist2 = ["1a", "1b"] testlist3 = ["2a", "2b"] def generator(testlist1, testlist2, testlist3): genwords = [random.choice(testlist1), random.choice(testlist2), random.choice(testlist3)] shufflegen = random.sample(genwords, len(genwords)) # 生成新的打乱列表 print(shufflegen) generator(testlist1, testlist2, testlist3)
内容的提问来源于stack exchange,提问作者Galuxosi
相关产品推荐
相关产品推荐

