遇到一个列表生成器的句子。不知道怎么实现了。

2018-07-06 14:35:18 +08:00
 LeIYc

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 的生成逻辑。 或者有没有相关的教程。

2905 次点击
所在节点    Python
11 条回复
cosven
2018-07-06 14:38:49 +08:00
http://www.pythonforbeginners.com/basics/list-comprehensions-in-python

楼主是要个介绍 list comprehension 的教程吗 ~
hjq98765
2018-07-06 15:00:53 +08:00
[1 if x0+x1<1 else 0 for x0,x1 in X]
BingoXuan
2018-07-06 15:07:42 +08:00
x0+x1<1,如果是真转换成整型就是 1 否则是 0,然后列表推导式遍历所有。
LeIYc
2018-07-06 15:10:04 +08:00
@cosven 谢谢。
在网上找了下,没找到。
可是这个 int () 是什么鬼。为什么会产生和[1 if x0+x1<1 else 0 for x0,x1 in X] 同样的效果。
LeIYc
2018-07-06 15:13:42 +08:00
@BingoXuan 也就是说,int () 就是把 x0 + x1 的结果值进行了一下转换。
这样啊。OK 懂了。有没有这类的教程可以学习学习啊。
Sylv
2018-07-06 15:17:07 +08:00
@LeIYc
int() 就是把数据类型转换为整型数字。
在很多语言里,True 的内部值就是 1,False 是 0。
>>> True == 1
True
>>> False == 0
True
Hiyagg
2018-07-06 15:17:44 +08:00
@LeIYc int(Ture) = 1 , int(False) = 0
BingoXuan
2018-07-06 15:34:43 +08:00
@LeIYc 廖雪峰的教程我觉得已经很全面了,但我不建议过多使用 lambda 或者推导式,会让代码看起来很迷惑。你这个算是比较巧妙处理这个问题。再复杂一点就开始恶心了。最好就拆开多个推导式处理
xpresslink
2018-07-06 15:56:19 +08:00
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
>>>
LeIYc
2018-07-06 16:28:08 +08:00
@BingoXuan 我是在 B 站上看 tensorflow 的视频,有一个北大的讲这个。然后里面就用了这个列表生成式。
当时谢了写没运行成功。而且在列表生成式中的 if and or 这个规律逻辑一直就不怎么懂。
然后就卡在这了。
另外,想请教各位 V 友们。怎么学好 tensorflow 和入门深度学习。
gnozix
2018-07-06 17:51:21 +08:00
这两个得出来的结果不一样啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/468659

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX