事情发生背景:python
题目是:有10万个随机数,请写一段代码,找出前10个最小的。app
一开始我想的是直接用python语法糖(列表生成式)生成一个随机的10万个数字。dom
可是我发现以我目前的能力完成不了,所以我就用了一个列表和一个列表生成式作出了一个伪随机数.blog
import random
import heapq
list1 = []
for a in range(20,2000000):
list1.append(a)
list2 = []
for i in range(10000):
list2.append(random.choice(list1))
res = heapq.nsmallest(10, list2)
print(res)
事情通过:
问题这样也就解决了(虽然是不完美的解决),可是我以为不够简洁,基于PythonIC(该名词上面有详细介绍)的严谨,就想到直接列表生成式作出伪随机数。
因而就有了这样(自认为的)怪诞。。。
import random
list1 = []
list2 = []
#双层伪随机数形成伪最终的随机数
list1 = [list1.append(random.randint(1,2000000))for i in range(1,20000)]
print(list1)
list2 = [list2.append(random.choice(list1))for i in range(20)]
print(list2)
为何会是None类型呢???的目前我没法理解的事情,记录下来,等待之后本身有足够的知识背景再来解释,你们有什么想法也能够讨论下。import