你接近 - 你可以只是一對夫婦的變化,以現有的代碼來獲得你可能想要的東西:
def genlist():
x = []
limit = randint(50, 200)
while len(x) < limit:
y = randint(1,9999)
x.append(y) # Use the .append() function is more common
return x
這會給你有之間的隨機長度的隨機號碼列表50和200.正如Noctis指出的那樣,Python中有一些功能可以減少必須編寫的代碼量。當你變得更加熟悉時,閱讀起來也更容易。
我們可以做的第一件事是將while
循環變爲for
循環。只要你事先知道你想要的東西有多少,for
循環就是要走的路。
def genlist():
x = []
for _ in range(randint(50, 200)): # use xrange if you're on Python2
y = randint(1,9999)
x.append(y) # Use the .append() function is more common
return x
我們可以下一個變化是一種叫做list comprehension。這基本上只需要構成循環的所有代碼並將其阻塞在[]
之內。 Here is a great visual guide to list comps
def genlist():
x = [randint(1, 9999) for _ in range(randint(50, 200))]
return x
而且你可以修剪下來的只是返回列表理解,而不是將其分配給varaible:
def genlist():
return [randint(1, 9999) for _ in range(randint(50, 200))]
而且如果你願意的話,你可以參數化的功能,使主叫方可以自定義輸出 - 使事情甚至更好,你可以給他們默認參數,使他們在默認情況下得到的當前行爲,除非他們需要對其進行重寫:
def genlist(randmin=1, randmax=9999, minsize=50, maxsize=200):
return [randint(randmin, randmax) for _ in range(randint(minsize, maxsize)]
@Jo ranBeasley我認爲你是通過關閉這個來濫用你的權力,因爲你故意誤解了這個問題並刪除了你的答案。這個問題與產生多個結果有關;給出一些工作代碼,你怎麼做多次? –
我甚至不知道在其他線程的代碼,我只想我自己的代碼工作:^( – epYa
OK也許你是正確的@PeterWood我將重新開放對不起......我也許沒有閱讀問題thuroughly足夠。 .. –