为了账号安全,请及时绑定邮箱和手机立即绑定

用列表理解理解函数

用列表理解理解函数

GCT1015 2022-06-02 15:10:53
有人可以简要解释一下代码的最后一行关于列表理解的内容吗试图理解不同的范围值def Function_1(x):    return x*2def Function_2(x):    return x*4empty_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]
查看完整描述

2 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

好的,最后一行的作用是,


[(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 * x


print([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]


查看完整回答
反对 回复 2022-06-02
?
繁星coding

TA贡献1797条经验 获得超4个赞

也许这会有所帮助:


线


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))


查看完整回答
反对 回复 2022-06-02
  • 2 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信