Python 根据条件将值追加到空列表
我有一个有很多列的表。我只对两个专栏感兴趣。让我们把它们称为A和B。我想创建一个空列,比如C=[],并根据一些条件向其追加值Python 根据条件将值追加到空列表,python,Python,我有一个有很多列的表。我只对两个专栏感兴趣。让我们把它们称为A和B。我想创建一个空列,比如C=[],并根据一些条件向其追加值 A B 1 10 0 11 0 12 1 09 0 14 0 13 1 12 让我们以上表为例如果A==1列中的值,则将A==1的B值附加到C列(空列表),直到A列中出现下一个A==1。对于A列中的下一个值1,请执行上述操作 所以我希望我的C列看起来像这样: A B C 1 10 10 0 11 10 0
A B
1 10
0 11
0 12
1 09
0 14
0 13
1 12
让我们以上表为例如果A==1列中的值,则将A==1的B值附加到C列(空列表),直到A列中出现下一个A==1。对于A列中的下一个值1,请执行上述操作
所以我希望我的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
如您所见,对于第一个A==1,C的值为B,其中A==1,直到下一个A==1出现。
我试过这样的方法,但不起作用:
for i in A:
if i == 1:
C.append(B[A==i])
但这将遍历我的整个列A并附加许多列表
我该怎么做呢
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]
遍历for
循环的几个迭代:
i=0
,A[0]
是1
,temp
变成B[0]
是10
i=1
,A[1]
是0
,temp
停留B[0]
仍然是10
i=2
,A[2]
是0
,temp
停留B[0]
仍然是10
i=3
,A[3]
是1
,temp
变成B[3]
是9
... etc如果
A
在第一行以0
开头,在C
中会发生什么情况?@Cyber我的A列在第一行有值1,然后在最后一行有很多值1,请您进一步说明?因此首先i
取值0,然后A[0]
为1。因此temp
变为10。然后循环是否再次转到if
语句?如果找到1
,则if[i]
语句将为True
,如果找到0
,则为False
。请参阅我的编辑,其中介绍了如何进行几次迭代。因此,a[i]
第一次取值1,并在循环结束前保持不变?a[i]
在循环的每次迭代中都会更新,这就是检查每行a是0还是1的方式。但是是的,在循环的1次迭代中,A[i]没有改变。不,请注意if语句中有temp=B[i]
。如果[i]为0,则该行不会执行,它将跳过更改temp的值。