문제

파이썬 Itertools 모듈은 발전기를 사용하여 반복 가능한/반복기를 처리하는 것과 관련하여 많은 케이크를 제공합니다. 예를 들어,

permutations(range(3)) --> 012 021 102 120 201 210

combinations('ABCD', 2) --> AB AC AD BC BD CD

[list(g) for k, g in groupby('AAAABBBCCD')] --> AAAA BBB CC D

루비의 동등한 것은 무엇입니까?

동일하게, 나는 빠르고 메모리 효율적인 것을 의미합니다 (Python의 itertools 모듈은 c로 작성됩니다).

도움이 되었습니까?

해결책

Array#permutation, Array#combination 그리고 Enumerable#group_by 1.8.7 이후 루비에서 정의됩니다. 1.8.6을 사용하는 경우 패킷이나 Active_Support에서 동등한 메소드를 얻을 수 있습니다. 백 포트.

예제 사용 :

[0,1,2].permutation.to_a
#=> [[0, 1, 2], [0, 2, 1], [1, 0, 2], [1, 2, 0], [2, 0, 1], [2, 1, 0]]

[0,1,2,3].combination(2).to_a
#=> [[0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3]]

[0,0,0,1,1,2].group_by {|x| x}.map {|k,v| v}
#=> [[0, 0, 0], [1, 1], [2]]

[0,1,2,3].group_by {|x| x%2}
#=> {0=>[0, 2], 1=>[1, 3]}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top