簡體   English   中英

如何創建隨機列表列表

[英]How to create a random list of lists

如何創建隨機列表。 random.sample(range(80), 10)生成一個包含 10 個項目的列表,最多為 80 個。

示例輸出:

[1,4,6,44,78,45,32,56,72,23]

但是您能否添加更多數據使其成為列表列表?

期望輸出:

[1,4,6,44,78,45,32,56,72,23]
[1,4,6,44,78,45,32,56,72,23]
[1,4,6,44,78,45,32,56,72,23]
[1,4,6,44,78,45,32,56,72,23]
[1,4,6,44,78,45,32,56,72,23]
[1,4,6,44,78,45,32,56,72,23]

random.sample的結果封裝在一個列表中並應用*運算符:

new_list = [random.sample(range(80), 10)]*6

您可以使用itertools.repeat

>>> from itertools import repeat
>>> list(repeat(random.sample(range(80),10),6))

itertools食譜背后的想法是懶惰地消費它。 所以最好像這樣使用它:

>>> items = repeat(random.sample(range(80),10),6)
>>> for item in items:
        #consume item here with your program logic

也許給出更好解釋的解決方案是考慮您需要生成什么樣的列表。 列表可以表示大量數據,例如表中的項目、市場列表和許多其他良好的表示。

遵循一些與代碼相關的生產質量模式,您可以使每個項目由一個因素生成,並以正確的可移植方式生成堆棧堆上的列表或數據集合。

根據程序輸入獲取參數:

from sys import argv

首先利用可以從馬身上進行射擊:

from collections import UserList

用於計算種子因子和預測生成的 ceil 函數是機器輪而不是像序列一樣的人:

from math import ceil

盒子上提供的示例函數生成:

from random import sample

種子函數用於限制隨機生成或增加,而沒有實現提供的默認值:

from random import seed

可以使用以下函數更好地使用迭代:

from itertools import repeat

現在,您可以使用以下行為附加整整和更正:

seed(ceil(1024*8.6))

小代的第一個匿名 lambda 函數:

sample_gen_fn = lambda l=80, n=10, s=0: sample(range(s,l),n)

另一個為列表工作的一個很好的過程:

user_sample_gen_fn = lambda l=80, n=10, s=0: UserList(sample_gen_fn(l,n,s))

在一個貓可以預測或閱讀列表的世界中,這不會對動物的大腦造成損害,例如。 在另一個運行很多有損壞,想像你的處理器的貓......這可以延長計算機的使用壽命。

所有這些都可以在描述中沒有解釋的大上下文中使用,但您需要考慮您的實現。

對用於迭代的本機函數的模式進行一點觀察,可以在不調用具有可尋址內容的變量的情況下進行參數特定的分配,這避免了僅用於調試的上下文的使用。

def reproduce_pile_fn(ll=6):
    return repeat(lambda: user_sample_gen_fn(),ll)

def stack_pile_cmd(ll=6, l=80, n=10, s=0):
    for seq in reproduce_pile_fn(ll):
        print(seq())

我認為這可以幫助與其他答案平等,因為需要對小型或大型實現進行很好的解釋。

之后,您可以在特定條件下調用該函數。

if __name__ == '__main__':
    # Usage with arguments comming from the program
    # executed as an script.
    #
    # args = argv[1:]
    # stack_pile_cmd(args[0])
    #
    # Common usage

    stack_pile_cmd()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM