2013-03-10 1 views
0

목록/열에서 가능한 조합 (두 쌍)을 찾고 상대 열/목록에 대해 상대 연산을 수행해야합니다. 쌍의 값을 빼는 것과 같습니다.Python : 열의 조합 찾기 및 색인 값을 사용하여 상대 연산 수행

예 입력 :

column 1 column2 
A   10 
C   20 
B   30 

출력

column1 coulum2 #internal operation 
[A,B] -20  A-B 
[A,C] -10  A-C 
[C,B] -10  C-B 

나는 조합 itertools.combinations을 사용했다.

어떤 조언을 받아야할까요?

+0

예. 파일에서 값을 읽었습니다. 가능한 조합도 있습니다. – Zero

+0

그래서 정확히 무엇이 문제입니까? 무엇을 성취하려고합니까? –

+0

데모 예제를 게시했습니다. 만약에, 나는 두 개의 기둥이있다. [A, B, C]와 다른 하나는 값이 [10,20,30]이라고 말합니다. 빼기 (쌍 (A, B)) 값을 가져와야합니다. 즉, 조합 [A, B]의 경우 출력 값 = 10-30 = -10이 필요합니다. itertools.combinations를 사용하면 모든 조합을 얻을 수 있습니다. 그러나,이 작업이나 조합의 인덱스 위치는 아닙니다. – Zero

답변

1

지도 P (P = {'A': 10, ..} 등)에 초기 열을 입력하고 w = [((c1, c2), P[c1] - P[c2]) for c1, c2 in itertools.combinations(P.keys(), 2)]을 계산하는 것보다. 결과 열에 넣으려는 모든 데이터가 포함되어야합니다.

열로 데이터를 얻으려면 letters_pairs, values = zip(*w)

+0

는 매력처럼 작동합니다! 값을 별도의 목록으로 분할해야합니다. – Zero

+0

그냥'zip'을 사용하십시오. itertools.combinations (P.keys(), 2)]에서 c1, c2에 대해'w = [((c1, c2), P [c1] - P [c2] * w)' – kkonrad

+0

예. 나는 그것을 사용했다. 어쨌든 그것을 게시 해 주셔서 감사합니다, @kkonard! – Zero