gpt4 book ai didi

python - 同时从两个列表中弹出值

转载 作者:行者123 更新时间:2023-11-28 22:40:56 25 4
gpt4 key购买 nike

这里发生了一些奇怪的事情(至少对我来说很奇怪)。我正在尝试从一个列表中弹出“nan”值,并从另一个列表中弹出相应的值。我被告知您不能从正在枚举的列表中弹出,所以我制作了一个临时列表。

import numpy as np
a=[]
b=[]

for i in range(0,100): #alternating list of ints and nan
if i/2. == i/2:
a.append(i)
else:
a.append(np.mean([])) #the only way I know how to make nan
b.append(i*100)

atemp=a
print(len(a),len(atemp))
for i,v in enumerate(atemp):
if np.isnan(v):
a.pop(i)
b.pop(i)
print(len(a),len(atemp))

发生了一些我不明白的事情:

1) 它似乎从 atemp AND a 弹出 nans,即使我只告诉它 a.pop(i) 而不是 atemp.pop(i)。是否存在某种我看不到的函数重载或等同于 a 和 atemp 的东西?我如何使它们完全独立的列表(即只从 a 而不是 atemp 弹出?

2) 它没有弹出所有的 nan,for 循环必须重复多次才能弹出所有的 nan

最佳答案

有更简单的方法,但如果您想使用自己的代码,您需要复制 a 而不仅仅是创建一个reference 和使用不同的逻辑从列表中删除元素,反向循环范围 len a -1 将为您提供所需的输出:

import numpy as np

a = []
b = []

for i in range(0, 100): # alternating list of ints and nan
if i % 2 == 0:
a.append(i)
else:
a.append(np.nan) #the only way I know how to make nan
b.append(i * 100)

atemp = a[:]
print(len(a), len(atemp))

for i in range(len(a)-1,-1,-1):
if np.isnan(a[i]):
a.pop(i)
b.pop(i)
print(len(a), len(atemp))

关于python - 同时从两个列表中弹出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33179412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com