[Python3] 007 列表的遍历,你是 for 联盟还是 while 部落

目录

  • 少废话,直接上例子

    • for 联盟

      • for 与 list 的简单合作
      • for 的老搭档 range()
      • for 与嵌套列表(双层列表)
      • for 从 if 那儿认识的 else
      • 循环“三杰”
    • while 部落
      • for 写了挺多,感觉有些对不住 while

少废话,直接上例子

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。

原文地址:https://www.cnblogs.com/yorkyu/p/10258922.html

时间: 2024-11-12 08:01:55

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

Python3.x:selenium遍历select下拉框获取value值

Python3.x:selenium遍历select下拉框获取value值 Select提供了三种选择方法: # 通过选项的顺序,第一个为 0 select_by_index(index) # 通过value属性 select_by_value(value) # 通过选项可见文本 select_by_visible_text(text) Select提供了四种方法取消选择: deselect_by_index(index) deselect_by_value(value) deselect_by

python3基础--列表和字典

列表 name = ['kzx', '666', 'none', 'truth'] # 截取 print(name[1: 3]) # 取下标1到3的元素(含下标1的元素,但是不包含3的)['666', 'none']print(name[1:-1]) # 也是取下标1到-1(即下标3)的元素(含下标1的元素,但是不包含-1的) ['666', 'none'] print(name[0:3]) # 取下标0到3的元素(含下标1的元素,但是不包含3的)['kzx', '666', 'none']pr

C#中三元运算符的写法以及列表的遍历

C#中三元运算符的写法:三个操作数a1,a2,a3   表达式a1=a2>a3?a2:a3    意思为如果a2>a3,a1=a2,否则 a1=a3 列表的遍历,返回第一个遍历的元素: /// <summary> /// 返回当前栏目的路径,不超过三级 /// </summary> /// <param name="yc"></param> /// <param name="yclist">&l

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

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 code 1 name=['燃灯古佛','释迦摩尼佛','弥勒佛'] 2 3 for item in name: 4 print(item) 2 show ------------------------------------------博文的精髓,在技术部分,更在镇场一诗.Python是优

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

python基础中的列表.元组.字典属于python中内置的序列数据结构.其中序列可以进行的操作包括索引.截取(切片).加.乘.成员检查等. 1.列表 列表(list)是最常用的python数据类型之一,列表的数据项不需要具有相同的类型.创建一个列表,只需要把用逗号分隔开的不同数据项使用方括号[]括起来即可.创建列表实例如下: list1 = ["test","测试",1997,2000]; list2 = [1,2,3,4,5,6]; list3 = ["

[Python3]List(列表)

概述 List(列表)是Python最常用的数据类型,它使用方括号[]来标识,下面我们看一个基本的列表创建示例: list1 = [1, 2, 3, u"Test", u"谷白"] 内置函数 Python中常用的内置函数有: len用于计算列表元素的个数 max返回列表中元素最大值 min返回列表中元素最小值 list将元组转换成列表 下面我们一起看看上述四个函数的示例: # -*- coding:utf-8 -*- __author__ = u'谷白' if __

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

1.二叉树的三种遍历方式 二叉树有三种遍历方式:先序遍历,中序遍历,后续遍历  即:先中后指的是访问根节点的顺序   eg:先序 根左右   中序 左根右  后序  左右根 遍历总体思路:将树分成最小的子树,然后按照顺序输出 1.1 先序遍历 a 先访问根节点 b 访问左节点 c 访问右节点 a(b ( d ( h ) )( e ( i ) ))( c ( f )( g ))      --   abdheicfg   1.2 中序遍历 a 先访问左节点 b 访问根节点 c 访问右节点 ( (

Python列表边遍历边修改问题解决方案:alist[:]

最近在看python,遇到个简单的问题:删除列表中指定的重复元素,发现一些实用并且有趣的东西. 1.错误示范 alist = [1,1,2,2,3,3,2,2,1,1] for i in alist: if i ==1: alist.remove(1) print(alist) 运行结果:[2, 2, 3, 3, 2, 2, 1, 1] 错误原因:删除列表元素,导致列表内容改变,部分元素位置前移:当继续进行for循环时,索引继续加一,导致跳过一个元素. 本例中,第二个"1"和第四个&q

Python3中列表、字典、元组、集合的看法

文首,我先强调一下我是一个弱鸡码农,这个随笔是在我学习完Python3中的元组.字典.列表,集合这四种常见数据的数据类型的一些感想,如果有什么不对的地方欢迎大家予以指正.谢谢大家啦 回归正题:这篇随笔讨论的是列表.字典.元组.集合.因此首先对着三种数据类型进行简要的分析是很有必要的: 1 :列表 列表的特点是以"[ ]" (后面称之为中括号)为主要特点的数据类型.学过其他语言的小伙伴第一反应就是,这不就是一个数组么,确实我个人感觉和数组十分的相似,不过有一下不同: a.在c++/jav