5 回答

TA貢獻1993條經驗 獲得超6個贊
zip()創建兩個列表的元組:
list(zip(age,frequency))
[(19, 2), (20, 1), (21, 1), (22, 3), (23, 2), (24, 1), (25, 1)]
所以在第一個循環中,i和是每個和j的第一項。agefrequency
age = [19, 20, 21, 22, 23, 24, 25]
frequency = [2, 1, 1, 3, 2, 1, 1]
第二個循環將循環j次數,表示將循環2次數。
每個循環i都會被追加到列表中s。
for i,j in zip(arr,freq):
# i = 19
# j = 2
for k in range(j):
s.append(i)
一次循環后,列表如下所示:
s = [19, 19]
經過另一個循環后,它看起來像這樣:
s = [19, 19, 20]

TA貢獻1790條經驗 獲得超9個贊
在第一個 for 循環中,您從年齡和頻率中獲取值,例如 19 2 在第二個 for 循環中,您迭代循環 j(2) 次,并將 19 兩次追加到 s 列表中。
在每個 for 循環之后使用 print 語句以便更好地理解。

TA貢獻1817條經驗 獲得超14個贊
我的理解是這樣的:當你調用函數 interquartile(age,Frequency,7) 時,你正在調用這個函數:
interquartile(arr,freq,n)
年齡成為你的輸入 arr,
頻率成為你的輸入頻率,
n (在這種情況下 7 是無用的,你沒有在任何地方使用它)。
在此 for 循環中,您將 arr 的一個元素和 freq 的一個元素分別放入 i 和 j 中:
for?i,j?in?zip(arr,freq):
在下面的循環中,您運行循環j次。即 1、2 或 3 次,具體取決于頻率值。?
????for?k?in?range(j):
當您追加值 j 次時,age 中的值將被追加到列表 s 中。

TA貢獻1842條經驗 獲得超13個贊
首先,代碼需要一些改進。n 不是必需的,并且 s 也必須在向其附加元素之前聲明。正確的代碼是:
def interquartile(arr,freq):
s=[]
for i,j in zip(arr,freq):
for k in range(j):
s.append(i)
print('This is S',s)
interquartile(age,frequency)
上面的代碼采用 2 個列表(可能具有相同的長度,即使沒有提及)并使用 zip 在每個列表的相同位置創建元素對 (i,j)。然后使用 range(j) 重復元素 i 的 j 次,并將它們添加到 s,當過程完成時給出所需的輸出。

TA貢獻1793條經驗 獲得超6個贊
如果您想要一個簡單的單行程序來完成您正在尋找的內容,您可以使用這樣的列表理解,只要兩個列表的長度相同:
data = [num for i, num in enumerate(age) for j in range(frequency[i])]
第一個循環for i, num in enumerate(age)
遍歷年齡列表并給出索引和該索引處i
的值。age
第二個循環for j in range(frequency[i])
將循環查找 處的值frequency[i]
。
總之,您將按照頻率列表指示的次數插入當前數字。
添加回答
舉報