我想創建一個接收給定長度的輸入序列/串列的函式
(ex: [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49, 1028, 4, 252, 32, 460, 15, 49, 1028, 55, 87, 195, 722, 10, 183, 117, 912, 479, 3684, 51, 109, 16, 2788, 124, 8, 556, 8, 95, 33, 333, 732, 2923, 15, 592, 433, 4.])
并且該函式將從輸入中輸出給定長度的隨機序列,例如 5
(ex: [48083, 50118, 50118, 39631, 5868] or [479, 3684, 51, 109, 16])
它基本上看起來像這樣 -
def foo(x, len):
return ...
x = [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49]
output_seq = foo(x, 5) # [39631, 5868, 452, 32, 460]
output_seq = foo(x, 5) # [452, 32, 460, 15, 49]
output_seq = foo(x, 5) # [50118, 50118, 39631, 5868, 452]
這可以在 python3x 中完成嗎?任何幫助,將不勝感激 ?
uj5u.com熱心網友回復:
您的問題歸結為隨機選擇一個起始索引。您需要確保索引在最后提供足夠的空間來包含您想要的長度,這將介于0串列長度減去大小之間:
import random
l = [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49, 1028, 4, 252, 32, 460, 15, 49, 1028, 55, 87, 195, 722, 10, 183, 117, 912, 479, 3684, 51, 109, 16, 2788, 124, 8, 556, 8, 95, 33, 333, 732, 2923, 15, 592, 433, 4.]
def foo(x, size):
start = random.randint(0, len(x) - size)
return x[start: start size]
foo(l, 5)
# [109, 16, 2788, 124, 8]
foo(l, 5)
# [10, 183, 117, 912, 479]
uj5u.com熱心網友回復:
您可以使用random.sample(x, len):
x = [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49]
print(random.sample(x, 5))
print(random.sample(x, 5))
print(random.sample(x, 5))
輸出:
[50118, 39631, 48083, 460, 452]
[452, 50118, 15, 49, 48083]
[15, 452, 48083, 50118, 39631]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412108.html
標籤:
