生成增加元素的列表

时间:2016-12-10 23:43:13

标签: python list recurring

我正在尝试编写一个更大程序的一部分,它将生成一个随机整数列表。第一个随机生成的列表应该有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")

2 个答案:

答案 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

希望这有帮助