Python:从多个列表中获取随机切片的更有效方法
下面是我编写的一段python代码,用于从4个列表中获取随机字符,并将它们附加到单独的列表中:Python:从多个列表中获取随机切片的更有效方法,python,list,random,Python,List,Random,下面是我编写的一段python代码,用于从4个列表中获取随机字符,并将它们附加到单独的列表中: key.append(chr(upper[randint(0,len(upper)-1)])) key.append(chr(lower[randint(0,len(lower)-1)])) key.append(chr(nums[randint(0,len(nums)-1)])) key.append(chr(symbols[randint(0,len(symbols)-1)])) 有没有更优雅的
key.append(chr(upper[randint(0,len(upper)-1)]))
key.append(chr(lower[randint(0,len(lower)-1)]))
key.append(chr(nums[randint(0,len(nums)-1)]))
key.append(chr(symbols[randint(0,len(symbols)-1)]))
有没有更优雅的方法
random.选择(
seq)
从非空序列seq返回一个随机元素。如果seq为空,则引发索引器
我建议使用
random.choice
+list.extend
:
lsts = [upper, lower, nums, symbols]
key.extend(chr(random.choice(x)) for x in lsts)
它们的长度都一样吗?@cᴏʟᴅsᴘᴇᴇᴅ 不一定。大写是大写的unicodes,小写的unicodes等。在这种情况下,您可以删除
[…]
,以提高内存效率。@MartijnPieters,谢谢。我不知道extend和发电机配合得很好,这需要很多时间。大多数接受列表和元组的东西也使用生成器。唯一的例外是str.join()。我知道join
的情况,但不知道这是一个例外。很酷的东西。@cᴏʟᴅsᴘᴇᴇᴅ 酷!这就是我要找的。谢谢
lsts = [upper, lower, nums, symbols]
key.extend(chr(random.choice(x)) for x in lsts)