Python中列表生成器的实现问题

Y1 = [[int(x0 + x1 <1) for (x0,x1) in X ]]

print("Y1",Y1)

Y2 = []

for x0,x1 in X:

if x0 + x1 <1:
Y2.append(1)

else:

Y2.append(0)

print('Y2',Y2)

我用简单方法写出来了。但是还是想理解下 Y1 的生成逻辑。 或者有没有相关的教程。


Python中列表生成器的实现问题

12 回复

http://www.pythonforbeginners.com/basics/list-comprehensions-in-python

楼主是要个介绍 list comprehension 的教程吗 ~


我无法理解你的问题

[1 if x0+x1<1 else 0 for x0,x1 in X]

x0+x1<1,如果是真转换成整型就是 1 否则是 0,然后列表推导式遍历所有。

谢谢。
在网上找了下,没找到。
可是这个 int () 是什么鬼。为什么会产生和[1 if x0+x1<1 else 0 for x0,x1 in X] 同样的效果。

也就是说,int () 就是把 x0 + x1 的结果值进行了一下转换。
这样啊。OK 懂了。有没有这类的教程可以学习学习啊。


int() 就是把数据类型转换为整型数字。
在很多语言里,True 的内部值就是 1,False 是 0。
>>> True == 1
True
>>> False == 0
True

int(Ture) = 1 , int(False) = 0

廖雪峰的教程我觉得已经很全面了,但我不建议过多使用 lambda 或者推导式,会让代码看起来很迷惑。你这个算是比较巧妙处理这个问题。再复杂一点就开始恶心了。最好就拆开多个推导式处理

Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type “copyright”, “credits” or “license()” for more information.
>>> issubclass(bool, int)
True
>>> isinstance(True, int)
True
>>> True.numerator
1
>>> False.numerator
0
>>>

我是在 B 站上看 tensorflow 的视频,有一个北大的讲这个。然后里面就用了这个列表生成式。
当时谢了写没运行成功。而且在列表生成式中的 if and or 这个规律逻辑一直就不怎么懂。
然后就卡在这了。
另外,想请教各位 V 友们。怎么学好 tensorflow 和入门深度学习。

这两个得出来的结果不一样啊

回到顶部