亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

試圖弄清楚這個 for 循環是如何工作的

試圖弄清楚這個 for 循環是如何工作的

慕沐林林 2023-10-11 16:14:26
有一個包含數字的列表和另一個包含頻率的列表。age = [19, 20, 21, 22, 23, 24, 25]frequency = [2, 1, 1, 3, 2, 1, 1]現在我必須創建另一個列表,其中包含頻率列表指定的受尊重頻率的列表年齡的數據S = [19, 19, 20, 21, 22, 22, 22, 23, 23, 24, 25]我在網上看到了執行此操作的代碼def interquartile(arr,freq,n):    for i,j in zip(arr,freq):        for k in range(j):            s.append(i)       print('This is S',s)interquartile(age,frequency,7)但我不明白第一個和第二個 for 循環中發生了什么
查看完整描述

5 回答

?
ibeautiful

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]


查看完整回答
反對 回復 2023-10-11
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

在第一個 for 循環中,您從年齡和頻率中獲取值,例如 19 2 在第二個 for 循環中,您迭代循環 j(2) 次,并將 19 兩次追加到 s 列表中。

在每個 for 循環之后使用 print 語句以便更好地理解。


查看完整回答
反對 回復 2023-10-11
?
大話西游666

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 中。


查看完整回答
反對 回復 2023-10-11
?
紅顏莎娜

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,當過程完成時給出所需的輸出。


查看完整回答
反對 回復 2023-10-11
?
搖曳的薔薇

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]。

總之,您將按照頻率列表指示的次數插入當前數字。


查看完整回答
反對 回復 2023-10-11
  • 5 回答
  • 0 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號