繁体   English   中英

Python 循环 While 直到条件满足

[英]Python Loop While Until Condition Is Met

我正在尝试创建一个 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 循环如何使用新的“迭代器”值再次评估原始真实条件。

list1 = [[[81, 79, 74, 57, 47, 39, 39, 39, 31, 31, 31, 31, 31, 30, 27, 22, 20,

您可以使用 numpy 数组来迭代条件。 例如:

#Array to check
x = np.array([81, 79, 74, 57, 47, 39, 39, 39, 31, 31, 31, 31, 31, 30, 27, 22, 20])
#Counts
y = np.ones(x.shape)

#Loop for each gap, check for equality, and add to y
for i in range(1, x.shape[0]):
    y[:-i] = np.where(x[:-i]==x[i:], y[:-i]+1, y[:-i])
print(y)

这应该产生:

>>> [1. 1. 1. 1. 1. 3. 2. 1. 5. 4. 3. 2. 1. 1. 1. 1. 1.]

还有许多其他方法可以做到这一点,因此您也可以探索其他选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM