gpt4 book ai didi

python - python中如何过滤掉数组中不按特定顺序排列的元素

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:56 25 4
gpt4 key购买 nike

抱歉,如果这是重复的,但我找不到任何解决我的问题的方法。

我正在循环访问许多日期,并且我想删除不按顺序排列的日期:

days = []
new_rows = []

for row in df.iterrows():

date = row[1][0]
date_init_input = date.replace("-", " ")
date_num = datetime.datetime.strptime(date_init_input, '%Y %m %d').weekday()

counter = 0

if len(days) == 5:
for day in days:
if day == counter:

print("Correct sequence " + new_rows[counter][1][0] + " " + findDay(new_rows[counter][1][0]))
counter += 1

if day == 4:
days.clear()
new_rows.clear()
else:
print("No sequence " + new_rows[counter][1][0] + " " + findDay(new_rows[counter][1][0]))

modDf = df.drop(new_rows[counter][0])
days.clear()
new_rows.clear()

else:
print("No sequence " + date + " " + findDay(date) + " BBBBBBBBBBB")
days.append(date_num)
new_rows.append(row)

这里的问题是循环仅向前移动五个索引,这意味着两次检查之间的任何顺序都会丢失。

简化问题

假设我有一个像这样的数组:

[0, 1, 2, 3, 4, 0, 1, 2, 4, 0, 0, 1, 2, 3, 4]

我想删除那些不属于长度为 5 的特定序列的数字。我希望我的数组如下所示:

[0, 1, 2, 3, 4, 0, 1, 2, 3, 4]

如果您需要进一步解释,请询问:)

最佳答案

我建议采用不同的方法。您可以使用临时列表来跟踪模式匹配。在循环日期时,将日期添加到临时列表中,只要它们符合顺序即可。一旦它们偏离序列,只需将临时列表清零即可。如果他们完成了序列,请将列表添加到结果列表中(在您的情况下为 new_rows )。

所以,用伪代码来说:

result = []
pattern = [1, 2, 3, 4, 5]
temp_list = []

for day in alldays:
if day == pattern[len(temp_list)]
temp_list.append(day)
if len(temp_list) == len(pattern)
result = result + temp_list
temp_list = []

关于python - python中如何过滤掉数组中不按特定顺序排列的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59905351/

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