生成递增元素列表

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

希望对您有所帮助