Python 中的 For 循环与其他编程语言有一些不同的特性。 我把我正在学习的东西留给你,以便充分利用最常用的循环之一。
在 Python 中,它旨在遍历可迭代对象,无论是列表、对象还是其他元素。
下面的结构是
h2=[ 'Valencia', 'Castellón', 'Alicante'] for j in h2: instructions
这里 h2 是一个可迭代元素,例如列表 h2=[ 'Valencia', 'Castellón', 'Alicante']。 该循环将进行 3 次迭代,第一次迭代 j=Valencia,第二次迭代变量 j=Castellón。
有了它,我们可以定义我们想要的指令,始终记住缩进,这是 Python 中必不可少的东西,但许多人会忽略,代码中会出现错误。
迭代 for 循环准确的次数。
如果我们希望它像在 C++ 中那样重复一定次数,我们将不得不使用 range()。 要迭代 10 次,我们将使用
for element in Range(9): instructions
我们放 9 而不是 10,因为 Range 从 0 开始,所以从 0 到 9 有 10 次迭代或循环循环。
知道 Range() 允许我们放置一个变量,而不是在里面放一个数字,我们将拥有更多的控制权。
var = 10 for element in Range(var): instructions
Range函数有很多选项,我会在另一篇文章中讲,以免内容混杂,尽量开发。
可以做更多的事情来控制 for 循环的流程。
中断和继续语句
有 2 个非常有用的特性使我们能够使 for 循环非常实用,分别是 break 和 continue。 它们通常与条件语句一起使用,如果,检查某事是否为真。
它们在其他循环中工作,还有另一个有趣的语句是 pass,它是一个执行但什么都不做的语句,非常适合当我们想要定义一个需要命令但我们想稍后放置它们的结构时(注释是对此没有用)
午休
使用 break 我们可以随时退出循环。 正如你想象的那样非常有用。 确实还有其他结构,例如 While,
numeros = [1, 2, 4, 3, 5, 8, 6] for n in numeros: if n == 3: break else: print('No se encontró el número 3')
继续
它使我们进入循环中的下一个元素。
numeros = [1, 2, 4, 3, 5, 8, 6] for n in numeros: if n == 3: continue else: print('No se encontró el número 3')
https://j2logo.com/bucle-for-en-python/
对于……其他
有一个从 For 派生的结构,即 for … else
datos = [1, 2, 3, 4, 5] for n in datos: if n == 2: break else: print('No hay 2')
这种结构是在他们看到这是必要的并且许多人正在使用替代方法来实现这一点之后出现的。 因此,它们可以帮助人们并获得更易读的代码
对于 _ 在可迭代
尽管我从未使用过它,但我在某些程序中已经看到了这一点。
当我们迭代一个对象、列表、字典等,但这些元素的内容我们不感兴趣时,我们可以用 _ 表示它
一个例子:
我们想计算一个列表的元素,但我们不关心它包含什么,我们只想要它的长度。
h2=[ 'Valencia', 'Castellón', 'Alicante'] count = 0 for _ in h2: cont += 1
在许多站点中,他们建议不要滥用这种做法。 真不知道它带来的好处,是不是更快?
向后循环
向后 for 循环。 从结尾迭代到开头
它使用 python 3 中引入的 reversed() 函数
h2=[ 'Valencia', 'Castellón', 'Alicante'] for j in reversed(h2): print (j)
使用两个索引循环,可迭代的值和索引
使用 enumerate() 我们可以处理集合的索引。 因为很多时候,除了可迭代对象本身的值之外,我们还对它的索引感兴趣。
h2=[ 'Valencia', 'Castellón', 'Alicante'] for j, h in enumerate(h2): print j, '-->', h2[i]
迭代 2 个列表
另一个非常有趣的选项是 zip() ,它将使我们的工作更轻松,并使我们的代码更简单且更具可读性。
h2=[ 'Valencia', 'Castellón', 'Alicante'] cod=[100, 200, 300] for j, h in zip(h2, cod): print h2, '-->', cod
在 Python 2.x 中 izip() 用于增强此功能,但在 Python 3 中 izip 是 zip()
按排序顺序循环
按对象的值而不是其索引按顺序迭代。 使用 sorted()
colors = ['rojo', 'amarillo', 'verde'] for color in sorted(colors): print color
如果我们想倒着做
colors = ['rojo', 'amarillo', 'verde'] for color in sorted(colors, reverse=True): print color
自定义排序顺序
colors = ['rojo', 'amarillo', 'verde'] for color in sorted(colors, key=len): print color
for循环中的哨兵值
哨兵值是导致循环结束的值。 它通常以 while 循环的形式呈现,但 Raymond Hettinger 向我们展示了如何将它与 for 一起使用,这样更快
blocks = [] for block in iter(partial(f.read, 32), ''): blocks.append(block) print (block)
用 for 遍历字典
字典是表达关系和进行分组的重要工具。
您可以使用 for 以传统方式浏览字典,但这不会返回所有信息,如果我们不开始添加计数器和其他元素,我们将无法使用这样的值和索引。
d = {'casa': 'azul', 'coche': 'rojo', 'hombre': 'verde'} for k in d.keys(): if k.startswith('r'): del d[k]
这样,除了看到元素,我们还可以通过改变元素或者删除元素来修改字典,同时迭代for循环。
d.keys() 调用参数并制作一个副本,并将其存储在我们可以修改的列表中。
获取索引和值而不是传统的东西,这是我们这些开始编程的人首先想到的事情
for k in d: print k, '-->', d[k]
我们将使用这个更快的选项
for k, v in d.items(): print k, '-->', v
ititems() 比 items()
Raymond Hettinger 谈论 Python 中的循环
这是一个古老但非常具有说明性的视频,在前 20 分钟内,Raymond Hettinger 向我们介绍了 Python 中循环的不同可能性,并举例说明了它们如何将人们广泛使用的结构转换为函数,以使循环更具可读性和更简单. 代码。