跟老齐学Python之for循环语句
作者:hebedich 发布时间:2021-12-22 04:52:50
废话少说,上干活。
for的基本操作
for是用来循环的,是从某个对象那里依次将元素读取出来。看下面的例子,将已经学习过的数据对象用for循环一下,看看哪些能够使用,哪些不能使用。同时也是复习一下过往的内容。
>>> name_str = "qiwsir"
>>> for i in name_str: #可以对str使用for循环
... print i,
...
q i w s i r
>>> name_list = list(name_str)
>>> name_list
['q', 'i', 'w', 's', 'i', 'r']
>>> for i in name_list: #对list也能用
... print i,
...
q i w s i r
>>> name_set = set(name_str) #set还可以用
>>> name_set
set(['q', 'i', 's', 'r', 'w'])
>>> for i in name_set:
... print i,
...
q i s r w
>>> name_tuple = tuple(name_str)
>>> name_tuple
('q', 'i', 'w', 's', 'i', 'r')
>>> for i in name_tuple: #tuple也能呀
... print i,
...
q i w s i r
>>> name_dict={"name":"qiwsir","lang":"python","website":"qiwsir.github.io"}
>>> for i in name_dict: #dict也不例外
... print i,"-->",name_dict[i]
...
lang --> python
website --> qiwsir.github.io
name --> qiwsir
除了上面的数据类型之外,对文件也能够用for,这在前面有专门的《不要红头文件》两篇文章讲解有关如何用for来读取文件对象的内容。看官若忘记了,可去浏览。
for在list解析中,用途也不可小觑,这在讲解list解析的时候,业已说明,不过,还是再复习一下为好,所谓学而时常复习之,不亦哈哈乎。
>>> one = range(1,9)
>>> one
[1, 2, 3, 4, 5, 6, 7, 8]
>>> [ x for x in one if x%2==0 ]
[2, 4, 6, 8]
什么也不说了,list解析的强悍,在以后的学习中会越来越体会到的,佩服佩服呀。
列位如果用python3,会发现字典解析、元组解析也是奇妙的呀。
要上升一个档次,就得进行概括。将上面所说的for循环,概括一下,就是下图所示:
请输入图片描述
用一个文字表述:
for iterating_var in sequence:
statements
iterating_var是对象sequence的迭代变量,也就是sequence必须是一个能够有某种序列的对象,特别注意没某种序列,就是说能够按照一定的脚标获取元素。当然,文件对象属于序列,我们没有用脚标去获取每行,如果把它读取出来,因为也是一个str,所以依然可以用脚标读取其内容。
zip
zip是什么东西?在交互模式下用help(zip),得到官方文档是:
zip(...)
zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
Return a list of tuples, where each tuple contains the i-th element from each of the argument sequences. The returned list is truncated in length to the length of the shortest argument sequence.
通过实验来理解上面的文档:
>>> a = "qiwsir"
>>> b = "github"
>>> zip(a,b)
[('q', 'g'), ('i', 'i'), ('w', 't'), ('s', 'h'), ('i', 'u'), ('r', 'b')]
>>> c = [1,2,3]
>>> d = [9,8,7,6]
>>> zip(c,d)
[(1, 9), (2, 8), (3, 7)]
>>> e = (1,2,3)
>>> f = (9,8)
>>> zip(e,f)
[(1, 9), (2, 8)]
>>> m = {"name","lang"}
>>> n = {"qiwsir","python"}
>>> zip(m,n)
[('lang', 'python'), ('name', 'qiwsir')]
>>> s = {"name":"qiwsir"}
>>> t = {"lang":"python"}
>>> zip(s,t)
[('name', 'lang')]
zip是一个内置函数,它的参数必须是某种序列数据类型,如果是字典,那么键视为序列。然后将序列对应的元素依次组成元组,做为一个list的元素。
下面是比较特殊的情况,参数是一个序列数据的时候,生成的结果样子:
>>> a
'qiwsir'
>>> c
[1, 2, 3]
>>> zip(c)
[(1,), (2,), (3,)]
>>> zip(a)
[('q',), ('i',), ('w',), ('s',), ('i',), ('r',)]
这个函数和for连用,就是实现了:
>>> c
[1, 2, 3]
>>> d
[9, 8, 7, 6]
>>> for x,y in zip(c,d): #实现一对一对地打印
... print x,y
...
1 9
2 8
3 7
>>> for x,y in zip(c,d): #把两个list中的对应量上下相加。
... print x+y
...
10
10
10
上面这个相加的功能,如果不用zip,还可以这么写:
>>> length = len(c) if len(c)<len(d) else len(d) #判断c,d的长度,将短的长度拿出来
>>> for i in range(length):
... print c[i]+d[i]
...
10
10
10
以上两种写法那个更好呢?前者?后者?哈哈。我看差不多了。还可以这么做呢:
>>> [ x+y for x,y in zip(c,d) ]
[10, 10, 10]
前面多次说了,list解析强悍呀。当然,还可以这样的:
>>> [ c[i]+d[i] for i in range(length) ]
[10, 10, 10]
for循环语句在后面还会经常用到,其实前面已经用了很多了。所以,看官应该不感到太陌生。


猜你喜欢
- 而标准的事件触发可以使用dispatchEvent方法。但现在FF5无法触发了A的默认行为了。如下 <!doctype html>
- 一、 腐蚀与膨胀1.1 腐蚀操作import cv2import numpy as npimg = cv2.imread('Data
- 前言MySQL是一个高速度、高性能、多线程、开放源代码,建立在客户/服务器(Client/Server)结构上的关系型数据库管理系(RDBM
- 本文实例为大家分享了python学生信息管理系统的具体代码,供大家参考,具体内容如下""" 程序名
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 前言之前写过很多关于扫描脚本的文章,一直都没写自己的扫描IP段是哪里搞来的,也会有朋友经常来问一些扫描经验,说实话我觉得这个工具并没有实际的
- 一、背景协助产品部门提取10000份产品log信息中的SN号、IMEI号、ICCID号到Excel表格中。1.l原始的og内容:2.提取后的
- 1、 二叉树的构建我们都知道二叉搜索树的特点是:当前节点的值大于它的左子树的值,小于等于右子树的值。所以我们这里可以通过迭代的方式构建二叉搜
- 大家都是用的哪一款远程控制工具呢?向日葵确实还可以,支持多平台、跨网络,但是必须要注册 Oray账号才行。虽然与免费版,但是用过的都知道,还
- 求最大连续子序列的和是一个很经典很古老的面试题了,记得在刚毕业找工作面试那会也遇到过同款问题。今儿突然想起来,正好快到毕业季,又该是苦逼的应
- 本文实例为大家分享了python图书管理系统的具体代码,供大家参考,具体内容如下"""图书管理系统"
- 利用pygame实现了简易版飞机大战。源代码如下:# -*- coding:utf-8 -*-import pygameimport sys
- 一、SQL 语句的执行处理1、即时 SQL一条 SQL 在 DB 接收到最终执行完毕返回,大致的过程如下:1. 词法和语 * 析;2. 优化
- 本文实例讲述了sql server实现递归查询的方法示例。分享给大家供大家参考,具体如下:有时候面对树结构的数据时需要进行递归查询,网上找了
- 本篇文章来介绍一道非常常见的面试题,到底有多常见呢?可能很多面试的开场白就是由此开始的。那就是 new 和 make 这两个内置函数的区别。
- 下面一段代码给大家分享php未登录自动跳转到登录页面,具体代码如下所示:<?php namespace Home\Controller
- 本文实例讲述了CI操作cookie的方法。分享给大家供大家参考,具体如下:CI 操作cookie 有三种方法,2中Ci自带的,其
- 环境系统:Centos7.2 服务:Nginx1:下载PHP7.0.2的安装包解压,编译,安装: $ cd /usr/s
- 通过本文给大家介绍Python3控制路由器——使用requests重启极路由.py的相关知识,代码写了相应的注释,以后再写成可以方便调用的模
- GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想你用了GROUP BY 按