input_shape = tuple([i for i in input_shape if i is not None])
我是python的新手,不明白那里发生了什么。
我认为有可能是C
的{{1}}的模拟,但我无法弄明白。
我试图将它分开来处理小部件以便理解,但它对我来说仍然没有意义。 像那样:
int a = 5 > 2 ? val1 : val2;
答案 0 :(得分:3)
循环将跳过未通过测试的项目(此处为None)。
input_shape = tuple([i for i in input_shape if i is not None])
# Roughly equivalent to
result = []
for i in input_shape:
if i is not None:
result.append(i)
input_shape = tuple(result)
概念上相同,除了列表理解将更快,因为循环由解释器在内部完成。此外,它显然不会留下result
变量。
答案 1 :(得分:1)
i for i
部分可以是任何内容,x for x
,y for y
,甚至是Kosmos for Kosmos
。
>>> input_shape = [1, 2, 3]
>>> input_shape = tuple([i for i in input_shape if i is not None])
>>> input_shape
(1, 2, 3)
在这里你可以看到,它通过循环遍历每个项目将我的列表转换为元组。
查看一个名为list comprehension的事情,因为我很难解释它
答案 2 :(得分:1)
input_shape = [1,2,3,None,5,1]
print(input_shape)
input_shape = tuple([i for i in input_shape if i is not None])
print(input_shape)
O / P
[1, 2, 3, None, 5, 1]
(1, 2, 3, 5, 1)
正如@spectras指出的那样,循环将跳过未通过测试的项目(此处为None)。
答案 3 :(得分:1)
[i for i in input_shape if i is not None]
它仅返回非None
然后,您调用tuple()
将结果列表转换为元组。
使用如下所示的普通for
循环可以获得相同的结果:
input_shape = [1, 2, None, 'a', 'b', None]
result = []
for i in input_shape:
if i is not None:
result.append(i)
print(result)
# Output: [1, 2, 'a', 'b']
现在,我们将result
(list
类型)转换为tuple
,如下所示:
final_result = tuple(result)
print(final_result)
# Output: (1, 2, 'a', 'b')
答案 4 :(得分:1)
你几乎与你的分离。内部部分(如果)是你注意到错误的表达式(i
),它实际上就在里面。它用括号[]
表示它对它的作用;它将这些东西放在一个列表中。 spectras'回答显示了如何使用变量来保存该列表。该构造称为list comprehension。