질문을 받았지만 "발전기 이해만으로 사용"하게 될 것입니다.else 절이있는 필터 (numpy.where)
(x if c else y for c, x, y in zip(cs, xs, ys))
를 들어 응답,하지만 어딘가 표준 라이브러리에 있고 난 그냥 파이썬 3.x의에서
... itertools에서 찾을 수없는 경우를 대비하는 기능 대안은있다 예를 들어, numpy.where(cs, xs, ys)
정확하게 이것을합니다.
질문을 받았지만 "발전기 이해만으로 사용"하게 될 것입니다.else 절이있는 필터 (numpy.where)
(x if c else y for c, x, y in zip(cs, xs, ys))
를 들어 응답,하지만 어딘가 표준 라이브러리에 있고 난 그냥 파이썬 3.x의에서
... itertools에서 찾을 수없는 경우를 대비하는 기능 대안은있다 예를 들어, numpy.where(cs, xs, ys)
정확하게 이것을합니다.
그것은 발전기 표현, 그래서 그냥 랩을 해제 :
cs = [True, False, True]
xs = [1, 2, 3]
ys = [10, 20, 30]
def generator(cs, xs, ys):
for c, x, y in zip(cs, xs, ys):
yield x if c else y
print(list(x if c else y for c, x, y in zip(cs, xs, ys)))
print(list(generator(cs, xs, ys)))
출력 :
[1, 20, 3]
[1, 20, 3]
내 자신의 이익을 위해 : for 문에서 zip과 itertools.izip을 사용하는 데 차이가 있습니까? – BenDundee
파이썬 3에서 나는 그것을 사용할 수 없다. 파이썬 2에서,'ixip()'는'zip()'와 비슷하지만 목록 대신에 반복자를 반환합니다. 파이썬 3의'itertools'에서 이미 사라졌습니다. 왜냐하면 그 버전에서'zip()'이 이미하고 있기 때문입니다. 기술적으로 iterator 객체는 생성자 객체입니다. 귀하의 질문에'python-3.x' 태그가 있기 때문에 나는이 모든 것을 언급하는 것을 귀찮게하지 않았습니다. – martineau
흠, 어때? (. 내가 파이썬 2.7.3에있어,하지만 난 그것을 여기에 중요한 생각하지 않는다)
>>> import itertools as it
>>> a=[1,2,3]
>>> b=[10,20,30]
>>> cond=[True, False, True]
>>> func=lambda c,x,y: x if c else y
>>> test=it.starmap(func, it.izip(cond,a,b))
>>> test.next()
1
>>> test.next()
20
>>> test.next()
3
'numpy.where (cs, xs, ys)'의 문제점은 무엇입니까? 표준 언어가 아닌 경우 적절한 라이브러리를 사용하거나 제안한 방법을 작성하십시오. – eumiro