Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从多个列表中获取随机切片的更有效方法_Python_List_Random - Fatal编程技术网

Python:从多个列表中获取随机切片的更有效方法

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)])) 有没有更优雅的

下面是我编写的一段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)]))
有没有更优雅的方法

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)