python - 在 for 循环中

标签 python while-loop

我想知道列表中第一个出现在任何其他数字之前的零的数量。

例如:
L1 = [0, 0, 0, 0, 0, 1, 2] - 输出应该是 5,也就是零的个数。
L2 = [1, 0, 0, 0, 0, 0, 2] - 输出应为零。虽然这个列表中有 5 个零,但列表是从 1 开始的。

这是我的代码:

k = 0
for i in L1:
    while i == 0:
        k = k + 1

但它不起作用。我认为这是一个无限循环,但我不知道为什么。

最佳答案

想想第一次将 i 设置为 0 时会发生什么。

while 循环将开始并且永不停止,因为i 在该循环中没有改变。

根据以下成绩单,对您的成绩单稍作修改,您会更好:

>>> list1 = [0,0,0,0,0,1,2]
>>> count = 0
>>> for item in list1:
...     if item == 0:
...         count = count + 1
...     else:
...         break
... 
>>> print count
5

或稍短的变体,它会立即中断非零值,否则添加一个。

>>> list1 = [0,0,0,0,0,1,2]
>>> count = 0
>>> for item in list1:
...     if item != 0: break
...     count = count + 1
... 
>>> print count
5

关于python - 在 for 循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18523519/

相关文章:

javascript - 如何获取函数名和getElementById中的变量

python - 在 Python 中解包字典时,单(非双)星号 * 是什么意思?

python - 在 python 中捕获 IOError

python - 为什么 pprint 模块对 dict 键的排序与 print 不同?

java - 使用扫描仪的 RPN 计算器,If/Else 语句不读取

java - 将数据库列添加到 JComboBox

python - 类型错误 : __class__ assignment only supported for heap types or ModuleType subclasses

python - 消除 PLY 语法中的这种 Shift-Reduce 冲突

C while循环仅在语句为真时运行?

php - 从 SQL 数据库中排序类别列表中的一组子类别