这是我的代码:
def lotteryNumbers(m,n):
newList = []
uniqueList = []
n=n+1
for i in range(1, n):
if i <= n:
randomness = int(random.randint(1,m))
newList.append(int(randomness))
for number in newList:
if number not in newList:
uniqueList.append(number)
sortNewList = uniqueList.sort()
print(newList)
print(uniqueList)
return uniqueList
但在uniqueList中没有显示任何内容,并添加了第二个for循环。取出后,我得到了newList的列表,但数字并不明显。我试图在不使用集合的情况下执行此操作,而更多的if项目不在newList中,然后附加到uniqueList并返回具有唯一数字的已排序(升序)列表。
答案 0 :(得分:1)
我会这样做:
def lotteryNumbers(m,n):
list = []
counter = 0
while (counter < n):
r = int(random.randint(1,m))
if (r not in list):
list.append(r)
counter+=1
list.sort()
return list
或者是单行......
def lotteryNumbers(m,n):
return random.sample(xrange(1, m), n)
答案 1 :(得分:1)
只是为了解决OP的其他一些问题,因为pellucidcoder提供了有效的解决方案
uniqList中没有显示任何内容,因为第二个for循环:
第2部分永远不会成立,因为该项来自newList,因此uniqList返回空。如果您将订单更改为:
答案 2 :(得分:0)
你的语句是不确定的,因为数字在列表中。 所以这就是我所做的,只是对你的代码做了一点改动。有效的方法可以做到这一点,我认为已经发布了
def lotteryNumbers(m,n):
newList = []
uniqueList = []
n=n+1
seen = 0
for i in range(1, n):
if i <= n:
randomness = int(random.randint(1,m))
newList.append(int(randomness))
for number in newList:
if number is not seen:
uniqueList.append(number)
seen = number
sortNewList = uniqueList.sort()
print(newList)
print(uniqueList)
return uniqueList