我正在尝试编写一个更大程序的一部分,它将生成一个随机整数列表。第一个随机生成的列表应该有X个元素,然后生成另一个带有X + Y元素的随机整数列表,依此类推,依次将Y添加到元素个数中,直到到达指定点。每个生成的列表也将使用选择排序方法进行排序。我使用几种不同的排序方法(选择,冒泡,合并,快速,基数......)来计算每种方法的执行时间,以增加输入大小。至于选择排序部分,我到目前为止有这个,但我得到的输出是100个100个数字的列表。显然,我对Python来说还是一个新手。
希望获得突破,谢谢!
import time
import random
start_timeSelection = time.clock()
lst = []
count = 100
def selectionSort(lst):
count = 100
lst = [int(999*random.random()) for i in range(count)]
for i in range(len(lst) - 1):
currentMin = lst[i]
currentMinIndex = i
for j in range(i + 1, len(lst)):
if currentMin > lst[j]:
currentMin, currentMinIndex = lst[j], j
if currentMinIndex != i:
lst[currentMinIndex], lst[i] = lst[i], currentMin
print(lst)
while count < 300:
count += 100
selectionSort(lst)
s = (time.clock() - start_timeSelection)
print("Selection Sort execution time is: ", s, "seconds")
答案 0 :(得分:0)
这是一个简短的例子,它使用生成器和列表推导来生成随长度增加的随机值列表。
import random
def generate_list(start_len, incr_len):
i = 0
while True:
yield [random.random() for j in range(start_len + i * incr_len)]
i += 1
gl = generate_list(start_len=2, incr_len=3)
print(next(gl)) # [0.3401864808412862, 0.33105346208017106]
print(next(gl)) # [0.5075146706165449, 0.5802519757892776, 0.5244104797659368, 0.8235816542342208, 0.3669745504311662]
答案 1 :(得分:0)
这是你要找的东西。 此代码创建一个包含随机数量的元素的列表,范围从0到9(但您可以更改范围)。它还创建了10个列表(也可以更改此编号)。每个新列表都是随机长度+前一个列表的长度:
from random import randint
X_plus_Y = 0
x = 0
while x < 10: #change 10 to make desired number of lists
lst = []
num_of_elements = randint(0,9) #change 9 for different random range
X_plus_Y += num_of_elements
print("add "+str(num_of_elements)+" equals " + str(X_plus_Y))
for i in range(X_plus_Y):
lst.append(randint(0,9))
print(lst)
print("\n")
x += 1
希望这有帮助