gpt4 book ai didi

python - 如何调整for循环以使其仅打印一次列表?

转载 作者:行者123 更新时间:2023-12-04 09:17:23 25 4
gpt4 key购买 nike

我有一些示例代码,如下所示:

import numpy as np
import pandas as pd

x = range(1, 12)
arr1 = np.random.randint(x)
arr2 = np.array(x)
arr3 = np.random.randint(x)
arr4 = np.random.randint(x)
arr5 = np.random.randint(0, 2, 11)

dict_df = {
'arr1' : arr1,
'arr2' : arr2,
'arr3' : arr3,
'arr4' : arr4,
'arr5' : arr5
}
d = pd.DataFrame(dict_df)

num_count = 0
list_of_num = []
for i in d.index:
number = d['arr1'][i]
for num in d['arr5']:
if num == 1:
num_count = 1
number = number
list_of_num.append(number)
elif num == 0:
num_count = 0
print(list_of_num)
我正在尝试构建列表,其中包含列 arr5 中的所有列表。如果前面有 -1,则附加。我从这里收到的输出是:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 8, 8, 8, 8, 8, 8]
代码的问题是我滥用了 for循环,这就是为什么列表重复了这么多次。我怎样才能更改代码以使代码不重复?

最佳答案

看来您不打算嵌套循环。外循环跨过每一行。然后,内循环在外循环的每次迭代中循环每一行。要以锁步方式沿两列移动,您可以编写一个循环:

for i in d.index:
if d['arr5'][i]:
list_of_num.append(d['arr1'][i])
num_count += 1
这当然是非常低效的,并且首先放弃了使用 numpy 或 pandas 的所有好处。您可以使用 bool 掩码完成同样的事情。在 numpy 中:
array_of_num = arr1[arr5.astype(bool)]
num_count = array_of_num.size
在 Pandas 中:
series_of_num = d['arr1'][d['arr5'].astype(bool)]
num_count = series_of_num.size
在这两种情况下,您都可以替换 .astype(bool)!= 0 .

关于python - 如何调整for循环以使其仅打印一次列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63160856/

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