请教一小段 python 程序

2015-07-27 18:50:10 +08:00
 wffett

新手,基础差

当z2为False时,输出z1对应的位置上的值

z1=[1,2,3,4,5,6,7,8,9]
z2=[True,False,False,True,True,True,True,True,False]
z1=z1[~x for x in z2] #这句有问题
print z1

因为我看到一段程序,是这样表达的:
x=x[~sp.isnan(y)]
y=y[~sp.isnan(y)]
不知道有什么不同

2240 次点击
所在节点    Python
6 条回复
cc7756789
2015-07-27 19:05:14 +08:00
>>> for x in zip(z1, z2):
... if not x[1]:
... print x[0]
...
2
3
9

>>> n = 0
>>> for x in z2:
... if not x:
... print z1[n]
... n += 1
...
2
3
9
mianju
2015-07-27 20:33:22 +08:00
```
for i in range(len(z1)):
if not z2[i]:
print z1[i]
```
应该也可以
mianju
2015-07-27 20:33:56 +08:00
缩进没弄好,抱歉就将就看看吧> <
scream7
2015-07-27 20:50:49 +08:00
z1 = [x for x,y in zip(z1,z2) if y]
wffett
2015-07-27 21:02:39 +08:00
@cc7756789
@mianju
@scream7
谢谢以上各位,从你们的答案中我学到了很多额外的收获。
这个问题是我搞错了数据类型,我以为sp.isnan(y)返回的列表,其实是数组,所以对应xy的类型也应该是数组。因此我的问题就好解决了

import scipy as sp

x=sp.array([1,2,3,4,5,6,7,8,9])
y=sp.array([True,False,True,True,True,False,True,False,True])

x=x[y]

print(x)
BooksE
2015-07-27 22:20:14 +08:00
lz是从R转过来的么..

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

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

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

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

© 2021 V2EX