2014-10-10 4 views
0

많은 열이있는 테이블이 있습니다. 나는 두 개의 기둥에만 관심이 있습니다. 그것들을 A와 B라고 부르 자. 나는 빈 열을 생성하고 싶다. C = []를 쓰고 어떤 조건에 따라 값을 덧붙인다.조건에 따라 빈 목록에 값을 추가합니다.

A B 
1 10 
0 11 
0 12 
1 09 
0 14 
0 13 
1 12 

예제를 예로 들어 보겠습니다. 열 A의 값이 == 1이면 다음 A == 1이 열 A에 나타날 때까지 A == 1 인 B의 값을 C 열 (빈 목록)에 추가합니다. 다음 값 1 인 경우 열 A, 위의 작업을 수행하십시오.

그래서 내가 같이 내 열 C를 원하는 것입니다 : 당신이 볼 수 그래서

A B C 
1 10 10 
0 11 10 
0 12 10 
1 09 09 
0 14 09 
0 13 09 
1 12 12 

, 첫 == 1, C는 대한 B의 값을 갖는 == 1 다음 A == 1이 나타날 때까지.

나는 이런 식으로 뭔가를 시도했지만, 그것은 작동하지 않습니다 :

for i in A: 
    if i == 1: 
     C.append(B[A==i]) 

그러나 이것은 내 전체 열 A를 통해 루프 많은 목록을 추가합니다.

어떻게해야합니까? for 루프의 몇 반복을 통해 걷기

+0

A'는'0'에로 이끌어'경우 C''에서 발생해야합니까 맨 처음 줄? – CoryKramer

+0

@Cyber ​​내 열 A의 첫 번째 행에 값 1이 있고 마지막 행까지 1의 값이 여러 개 있습니다. – ThePredator

답변

2
A = [1,0,0,1,0,0,1] 
B = [10,11,12,9,14,13,12] 

C = [] 
temp = B[0] # Initialize a temporary variable to the first item in B 

for i in range(len(B)): 
    if A[i] == 1: 
     temp = B[i] # Only update temp if 1 was in the A column 
    C.append(temp) 

>>> C 
[10, 10, 10, 9, 9, 9, 12] 

:

i = 0A[0]1입니다 tempA[1] 여전히 10
입니다 0, temp 숙박 B[0]입니다 10
i = 1입니다 B[0]된다 i = 2, A[2]은 01입니다. 여전히 10
i = 3입니다 23,, temp 숙박 B[0], A[3]temp9
입니다 B[3]을 ...되고, 1이다 등

+0

더 자세히 설명해 주시겠습니까? 그래서 첫번째'i'는 값 0을 취하고'A [0]'는 1입니다. 따라서'temp'는 10이됩니다. 그러면 루프는 다시'if' 문으로 돌아갑니다. – ThePredator

+0

'if A [i]'는'1'을 찾으면'True'가되고,'0'을 찾으면'False'가됩니다. 그 편집 방법을 몇 차례 반복 해 보도록하겠습니다. – CoryKramer

+0

그래서'A [i]'가 처음으로 값 1을 취하고 루프의 끝까지 동일하게 유지됩니까? – ThePredator

관련 문제