猿问

用列表理解理解函数

有人可以简要解释一下代码的最后一行关于列表理解的内容吗


试图理解不同的范围值


def Function_1(x):

    return x*2


def Function_2(x):

    return x*4


empty_list = []

for i in range(16):

    empty_list.append(Function_1(Function_2(i)))


print(empty_list)


print([Function_1(x) for x in range(64) if x in [Function_2(j) for j in range(16)]])

输出:


[0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120]

[0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120]


GCT1015
浏览 107回答 2
2回答

慕容森

好的,最后一行的作用是,[(2 * x) for x in range(64)],它给你一个 64 个数字的列表(乘以 2),然后我们有一个条件说if x in [(4 * j) for j in range(16)]。如果存在与第一个列表相同的数字,它将检查第二个列表,并且在最终 OP 中仅考虑这些数字。操作函数_1:[(2 * x) for x in range(64)]# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126]操作函数_2:[(4 * j) for j in range(16)]# [0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60]查找第二个列表中的第一个列表中是否有数字并调用它们x,然后返回2 * xprint([x*2 for x in range(64) if x in [j*4 for j in range(16)]])# [0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120]

繁星coding

也许这会有所帮助:线output = [function_1(x) for x in range(64) if x in [function_2(j) for j in range(16)]]相当于output = []y = [function_2(j) for j in range(16)]for x in range(64):    if x in y:        output.append(function_1(x))
随时随地看视频慕课网APP

相关分类

Python
我要回答