少废话,直接上例子

for 联盟

for 与 list 的简单合作

# 例1
list1 = [0, 1, 2, 3, 4] for i in list1:
print(i)
  • 运行结果

0

1

2

3

4

for 语句会按一定顺序(可自定义)逐个访问 in 后的数据,然后执行其子程序。

in 前的 i 可以改为有具体意义的变量名,甚至可以是 _。

注意不要漏打冒号。


# 例2
list2 = ["I am YorkFish."] for i in list2:
print(i)
  • 运行结果

I am YorkFish.


for 的老搭档 range()

# 例3
for i in range(5):
print(i) print(type(range(5)))
  • 运行结果

0

1

2

3

4

<class 'range'>

range(5) 相当于 range(0, 5),和列表的分片有些像,“左闭右开”。


# 例4
for i in range(2, 6):
print(i)
  • 运行结果

2

3

4

5

range() 中的区域可调。


# 例5
for i in range(2, 6, 2):
print(i)
  • 运行结果

2

4

range() 可以设置增幅。


# 例6
for i in range(2, 6, -1):
print(i) print("Over.")
  • 运行结果

Over.

增幅设置成 -1,从结果看,程序被跳过了。


# 例7
for i in range(6, 2, -1):
print(i)
  • 运行结果

6

5

4

3


for 与嵌套列表(双层列表)

# 例8

# list8 为嵌套列表,也叫双层列表
list8 = [["one", 1], ["two", 2], ["three", 3]] for i,j in list8:
print(i, "---", j)
  • 运行结果

one --- 1

two --- 2

three --- 3


# 例9.1

list9 = [["one", 1, "一"], ["two", 2], ["three", 3, 4]]

for i,j in list9:
print(i, "---", j)
  • 运行结果

ValueError……too many values to unpack (expected 2)

数字格式错误(省略部分信息)需解包的值多于 2 个(我觉得这里的 2 指 i, j)。


# 例9.2

list9 = [["one", 1, "一"], ["two", 2], ["three", 3, 4]]

for i,j,k in list9:
print(i, "---", j)
  • 运行结果

ValueError……not enough values to unpack (expected 3, got 2)

值不足,应为 3 个,只得到 2 个(我觉得说的是 ["two", 2])。


# 例9.3 双层列表的变异

list9 = [["one", 1, "一"], ["two", 2, "二"], ["three", 3, 4]]

for i,j,k in list9:
print(i, "---", j, "---", k)
  • 运行结果

one --- 1 --- 一

two --- 2 --- 二

three --- 3 --- 4


# 例9.4 三重列表?

list9 = [ [["one"], [1], ["一"]], [["two"], [2], ["二"]] ]

for i,j,k in list9:
print(i, "---", j, "---", k)
  • 运行结果

['one'] --- [1] --- ['一']

['two'] --- [2] --- ['二']


# 例9.5  三重列表?

list9 = [[["one1","one2"], [11, 12], ["一1", "一2"]], \ # 一行写不下,加个反斜杠表示下行继续
[["two1", "two2"], [21, 22], ["二1", "二2"]], \
[["three1", "three2"], [31, 32], ["三1", "三2"]]] for i,j,k in list9:
print(i, "---", j, "---", k)
  • 运行结果

['one1', 'one2'] --- [11, 12] --- ['一1', '一2']

['two1', 'two2'] --- [21, 22] --- ['二1', '二2']

['three1', 'three2'] --- [31, 32] --- ['三1', '三2']

1 从结果看,这种方法仍然只能到第二层

2 我把 i,j,k 写成 [i,j,k] 结果一样


for 从 if 那儿认识的 else

# 例10
# 打印列表(名单)中的名字
# 如果列表中没有想要的,或者列表遍历结束,打印提示语 for name in ['Batman', 'Wonder Woman', 'Aquaman', 'Green Lantern', 'Harley Quinn']:
print(name)
if name == "Harley Quinn":
print("{0}, when can I see your independent film?".format(name))
else:
print("I've seen your movies already.")
else:
print("Green Lantern, I want to see your sequel!")
  • 运行结果

Batman

I've seen your movies already.

Wonder Woman

I've seen your movies already.

Aquaman

I've seen your movies already.

Green Lantern

I've seen your movies already.

Harley Quinn

Harley Quinn, when can I see your independent film?

Green Lantern, I want to see your sequel!


循环“三杰”

  • break 无条件结束所在层级的整个循环
  • continue 无条件结束本次循环,进行所在层级的新一轮循环
  • pass 像是闯关游戏中的“过”,像是“挡拆”,更像是暂时性的“占着xx不xx”
# 例11 break

for i in range(3):
print("i = ", i)
for j in range(3):
print("j = ", j)
if j == 1:
print("Over.")
break
else:
print("Not found.")
  • 运行结果

i = 0

j = 0

Not found.

j = 1

Over.

i = 1

j = 0

Not found.

j = 1

Over.

i = 2

j = 0

Not found.

j = 1

Over.


# 例12 continue

for i in range(3):
print("i = ", i)
for j in range(3):
print("j = ", j)
if j == 1:
print("Over.")
continue
else:
print("Not found.")
  • 运行结果

i = 0

j = 0

Not found.

j = 1

Over.

j = 2

Not found.

i = 1

j = 0

Not found.

j = 1

Over.

j = 2

Not found.

i = 2

j = 0

Not found.

j = 1

Over.

j = 2

Not found.


# 例13 pass

for i in range(5):
pass # 先用 pass 占位,以免报错,日后有好的 idea 可补上
print("Over.")
  • 运行结果

Over.


while 部落

# 例14
list14 = [0, 1, 2, 3, 4] length = len(list14)
index = 0 while index < length:
print(list14[index])
index += 1
  • 运行结果

0

1

2

3

4


for 写了挺多,感觉有些对不住 while

  • 理论上 for 联盟与 while 部落的实力不相上下,即 for 的代码与 while 的代码可互改。

  • 个人感觉 Python 的设计使得 for 与 while 各有侧重。

  • 挖个坑,待我学有小成,聊聊 for 与 while 各自特定的用法,编号 Py007-1。

[Python3] 007 列表的遍历,你是 for 联盟还是 while 部落的更多相关文章

  1. 菜鸟学IT之python3关于列表,元组,字典,集合浅认识!

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753 一.列表,元组,字典,集合分别如何增删改查及遍历. 列表 # 列表的 ...

  2. Python3 解析XML 层序遍历二叉树

    Python3 解析XML 层序遍历二叉树 keyword : python3, xml, xml.dom.minidom, 层序遍历, 层次遍历, 二叉树 part1 问题描述 面对如下 XML 文 ...

  3. Python2和Python3中列表推导式的不同

    Python2和Python3中列表推导式的不同 python2 >>> x = 'my girl' >>> lst = [x for x in 'hello'] ...

  4. python3.7[列表] 索引切片

    python3.7[列表] 索引  切片 排序     #### 列表.sort 永久排序   sorted(列表) 临时排序   ### >>> print(sorted(a))[ ...

  5. Python3基础 for循环 遍历并输出一个字符串的列表

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  6. python3中列表、元组、字典的增删改查说明详解

    python基础中的列表.元组.字典属于python中内置的序列数据结构.其中序列可以进行的操作包括索引.截取(切片).加.乘.成员检查等. 1.列表 列表(list)是最常用的python数据类型之 ...

  7. python2和python3关于列表推导的差别

    看下面两个例子: python2的环境:列表中的同名变量名被替换了 >>> x = 'my precious' >>> dummy = [x for x in 'A ...

  8. 【转】python3 内循环中遍历map,遍历一遍后再次进入内循环,map为空

    今天在使用python map的过程中,发现了一个奇怪问题,map遍历完成后,再次访问map,发现map为空了,特记录下来,以备日后查看. 如下代码,期望的结果是每次从外循环进入内循环,map都从头开 ...

  9. python3实现二叉树的遍历与递归算法解析

    1.二叉树的三种遍历方式 二叉树有三种遍历方式:先序遍历,中序遍历,后续遍历  即:先中后指的是访问根节点的顺序   eg:先序 根左右   中序 左根右  后序  左右根 遍历总体思路:将树分成最小 ...

随机推荐

  1. Linux知识点拾遗-磁盘UUID

    查看磁盘UUID 方法1 ls -l /dev/disk/by-uuid example: [root@dplinux ~]# ll /dev/disk/by-uuid/ total 0 lrwxrw ...

  2. 代理层Nginx限流(降级)预案

    典型服务架构介绍 预案适用场景 监控指标 操作手册 相关文档 操作方法 配置语法 配置样例 配置解释 注意事项 典型服务架构介绍 典型的互联网服务访问链路都是分层结构的,从流量入口,到应用层,到后端资 ...

  3. JavaScript设计模式样例四 —— 单例模式

    单例模式(Singleton Pattern): 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 目的:阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例. 场景: ...

  4. qt console 控制台程序 与win console控制台程序是不同的

    #include <QtCore/QCoreApplication> int main(int argc, char *argv[]){ QCoreApplication a(argc, ...

  5. 使用LVM快照进行数据库备份

    使用mysqldump备份时,如果存储引擎为MyISAM,则只能实现温备份,并需使用选项--lock-all-tables锁定所有表.如果存储引擎为InnoDB,则加上--single-transac ...

  6. MySQL数据库4Python操作mysql、索引、慢查询日志

    目录 一.Python 操作 mysql 1.1python 操作 mysql 1.2查询数据 1.3增加(添加.更新)数据 1.4修改数据 1.5删除数据 1.6SQL注入问题 1.6.1问题的引入 ...

  7. 【bzoj4552】【Tjoi2016&Heoi2016】【NOIP2016模拟7.12】排序

    题目 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这个全排列序列进行m次 ...

  8. 无法启动链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 的嵌套事务。由于 XACT_ABORT 选项已设置为 OFF,因此必须使用嵌套事务。链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 返回了消息"无法在此会话中启动更多的事务"。

    无法启动链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 的嵌套事务.由于 XACT_ABORT 选项已设置为 OFF,因 ...

  9. js中的 与和或 , && ,||

    || 1.只要"||"前面为false,不管"||"后面是true还是false,都返回"||"后面的值. 2.只要"||&quo ...

  10. linux运维、架构之路-LVS负载均衡

    一.LVS介绍 1.介绍           LVS是Linux Virtual Server的简写,是linux虚拟的服务器集群系统,可以在unix/linux平台下实现负载均衡集群功能,由章文嵩博 ...