我在使用以下代碼時遇到問題:
for x in range(13):
prod(random.SystemRandom().random() for x in range(8))
“for x in range(8)”在 prod 函式中究竟做了什么?我已經閱讀了數學檔案,但我仍然不明白。有人可以解釋一下這個功能嗎?
uj5u.com熱心網友回復:
這不是特定于math.prod(). 這是一個生成亂數序列的生成器運算式。它產生了其中的 8 個,因為for x in range(8)。
to 的引數math.prod()是一個可迭代物件,而生成器是一種可迭代物件。prod()將可迭代序列中的所有值相乘。
uj5u.com熱心網友回復:
不確定您是否詢問語法或逐步完成。
range 函式回傳從 0 開始到您指定的輸入的數字序列。
因此,正如所寫的那樣,它將取 0 和 1 之間的 9 個亂數的乘積。因為它處于回圈中(對于范圍內的 x(13)),它將執行 14 次。
如果您的問題是關于串列理解,您可以在python 檔案中閱讀它
uj5u.com熱心網友回復:
for x in range(8)只是生成器運算式的一部分,與math.prod. 為了回答您的問題,它會在區間 [0, 1] 上創建一個由八個隨機陣列成的序列。你可能會看到這個
import random
list(random.SystemRandom().random() for x in range(8))
[0.003455723936271693,0.6805747786326888,0.546261218098562,0.601146820744067,0.8435991971789742,0.9648570965040333,0.28307143225490927,0.4388989719001757]
在x這里使用變數名是不好的做法,因為它遮蔽了xin for x in range(13)。未使用的變數的既定約定是命名它_。這段代碼的一個更好的實作是:
from math import prod
import random
for x in range(13):
prod(random.SystemRandom().random() for _ in range(8))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/317483.html
