我曾经认为有两个功能做同样的事情。但事实并非如此。
z = [1, 2, 3, 4, 5, 6]
def a(su) : # функция номер один
for i in su :
m = i * i
return m # с z получится 36
def b(su) : # функция номер два
m = [i * i for i in su]
return m # с z получится [1,4,9,16,25,36]
我不清楚为什么函数a会乘以列表的最后一个元素。根据我的计划,它应该以与函数b相同的方式乘以所有内容。为什么会发生这种情况,又是如何发生的?
该函数
b创建一个新列表,其中每个元素等于列表中的一个元素su乘以自身。该函数
a创建一个数值变量,m在每次迭代中,该变量的值是列表的当前元素su乘以自身的值。该函数
a应如下所示以获得类似的结果b:要理解这个过程,请注意 z 是一个整数列表,因此函数 a 获取并通过这个列表,为变量 m 赋值,根据类型规则(int 乘以 int 得到 int) , 也将变为 int。而函数 b 生成一个值列表并将其分配给变量 m。