【发布时间】:2021-12-24 10:30:53
【问题描述】:
我正在尝试创建一个 while 或 if 循环来按顺序单步执行一个列表,以返回在值更改之前所需的步数。这是我的清单示例。对于第一个项目(通过 47),循环将输出 1。对于第一个 39,循环将输出 3,对于第二个 39,它将输出 2,对于第三个它将输出 1。然后对于前 31 个会放 5 个,接下来的 31 个会放 4 个,以此类推。
我不确定如何执行此操作,以及是否可以使用 while 循环来完成。我认为可以使用从 1 开始的迭代器/计数器来完成,然后逐步增加 (+= 1) 直到值发生变化。我认为这将是一个'while list[orig index] == list[orig + iterator index],迭代计数器并测试是否相等。也就是说,我不知道 while 循环如何使用新的“迭代器”值再次评估原始真实条件。
我尝试了类似的方法,它似乎有效,但绝对笨重......关于如何简化的任何想法。它也不考虑嵌套“ifs”数量以上的计数
for i in range(0, len(df)):
diff = 1
if df.iloc[i + diff - 1]['prev_count'] != '3--2':
gap.append(diff)
else:
diff += 1
if df.iloc[i + diff - 1]['prev_count'] != '3--2':
gap.append(diff)
else:
diff += 1
if df.iloc[i + diff - 1]['prev_count'] != '3--2':
gap.append(diff)
else:
diff += 1
if df.iloc[i + diff - 1]['prev_count'] != '3--2':
gap.append(diff)
else:
diff += 1
gap.append(diff)
list1 = [[81, 79, 74, 57, 47, 39, 39, 39, 31, 31, 31, 31, 31, 30, 27, 22, 20,
【问题讨论】:
-
Stackoverflow 不会为您编写代码。到目前为止,您尝试过什么?
-
欢迎来到 Stack Overflow!请使用tour 并阅读How to Ask。你已经尝试过什么,你到底卡在哪里?如果您不确定如何开始,请先尝试在纸上写下说明。另外,请写一个正确的标题。 How to Ask 有这方面的提示。
-
我可能会编写一个生成器函数,但您应该继续在问题中发布您的实现。
-
感谢您的反馈,我尝试添加更多细节。尽管它仅限于我编写的 IF 语句的数量,但我使用嵌套 IF 的非常手动的方法来实现这一点。我想知道是否有一种方法可以使用 while,或者迭代相同的 If 步骤直到条件满足。干杯并感谢您的所有帮助(以及对问题的耐心 - 编码和 Stack Overflow 的新手!)
标签: python list loops for-loop while-loop