- 主题:求教一个语法问题
a=[1,2,3,....]
b=[True,False,True...]
a和b大小一样,现在要求a里面把b中false的的位置置成0,就是
c=[1,0,3...]
不写循环的话,怎么写最方便呢
--
修改:yatobiaf FROM 111.207.148.*
FROM 111.207.148.*
简单循环
c=[a[i] * b[i] for i in range(a))]
【 在 yatobiaf 的大作中提到: 】
: a=[1,2,3,....]
: b=[True,False,True...]
: a和b大小一样,现在要求a里面把b中false的的位置置成0,就是
: ...................
--
FROM 119.97.241.*
不用循环
c=list(map(lambda x,y:x*y,a,b))
【 在 sloanwall 的大作中提到: 】
: 简单循环
: c=[a[i] * b[i] for i in range(a))]
--
FROM 119.97.241.*
这个好,太感谢啦~
【 在 sloanwall 的大作中提到: 】
: 不用循环
: c=list(map(lambda x,y:x*y,a,b))
:
--
FROM 223.104.38.*
【 在 yatobiaf 的大作中提到: 】
: a=[1,2,3,....]
: b=[True,False,True...]
: a和b大小一样,现在要求a里面把b中false的的位置置成0,就是
: ...................
直接向量处理, 使用库,效率会更高一些(库底层用效率更高语言实现),
当要处理数据长度很长后有差异。
import numpy as np
np.where(b, a, 0)
where第一个参数是逻辑向量数组, 当为True的时候, 结果参数2数组对应位置元素,
为False,则取参数3数组位置的值, 参数3因为是常数, 库会自动把数据广播成要求的数组长度。
即 等价于 np.where(b, a, [0]*len(b))
--
FROM 124.126.3.*
这个 感觉 挺 现代化的
【 在 sloanwall 的大作中提到: 】
: 不用循环
: c=list(map(lambda x,y:x*y,a,b))
:
--
FROM 47.144.177.*
[... for (a, b) in zip(...)...]
[... for range(...) ...]
a * [ 1 if... else 0 for be in b]
底层实现上 肯定都是循环吧 ? # 不过 我对python 代码的性能 比较无知
【 在 yatobiaf 的大作中提到: 】
: a=[1,2,3,....]
: b=[True,False,True...]
: a和b大小一样,现在要求a里面把b中false的的位置置成0,就是
: ...................
--
FROM 47.144.177.*
比循环快
【 在 hongyan2022 的大作中提到: 】
: [... for (a, b) in zip(...)...]
: [... for range(...) ...]
: a * [ 1 if... else 0 for be in b]
: ...................
--
FROM 121.33.161.*
Python貌似并不建议用lambda,我还是觉得
np.where(b, a, 0)比较好.
【 在 sloanwall 的大作中提到: 】
: 不用循环
: c=list(map(lambda x,y:x*y,a,b))
:
--
FROM 165.156.39.*
【 在 lixinfeng 的大作中提到: 】
: 标 题: Re: 求教一个语法问题
: 发信站: 水木社区 (Tue Jun 13 09:46:05 2023), 转信
:
: Python貌似并不建议用lambda,我还是觉得
: np.where(b, a, 0)比较好.
一点小事,非要装那么大一个numpy库
--
FROM 111.59.124.*