生成递增元素列表
generate a list of increasing elements
我正在尝试编写一个较大程序的一部分,它将生成一个随机整数列表。第一个随机生成的列表应该有 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")
这是一个简短的示例,它使用生成器和列表理解来生成长度不断增加的随机值列表。
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]
这就是您要查找的内容。
此代码创建一个列表,其中包含 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
希望对您有所帮助
我正在尝试编写一个较大程序的一部分,它将生成一个随机整数列表。第一个随机生成的列表应该有 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")
这是一个简短的示例,它使用生成器和列表理解来生成长度不断增加的随机值列表。
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]
这就是您要查找的内容。 此代码创建一个列表,其中包含 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
希望对您有所帮助