5 回答
TA贡献1993条经验 获得超5个赞
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条经验 获得超12个赞
首先,代码需要一些改进。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]
。
总之,您将按照频率列表指示的次数插入当前数字。
添加回答
举报