5 回答

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

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

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

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
首先,代碼需要一些改進(jìn)。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 個(gè)列表(可能具有相同的長(zhǎng)度,即使沒有提及)并使用 zip 在每個(gè)列表的相同位置創(chuàng)建元素對(duì) (i,j)。然后使用 range(j) 重復(fù)元素 i 的 j 次,并將它們添加到 s,當(dāng)過程完成時(shí)給出所需的輸出。

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