06我的Python学习之路--嵌套循环和列表入门

1. 循环嵌套

  • 1.1 概念:在一个循环体里嵌入另一个循环
    • 外层循环可以控制高度
    • 内层循环可以控制宽度
  • 1.2 语法:
    嵌套循环
    • 示例:
      打印三角形
    # 分析
    # x		1  j < 1=0+1  0 = i
    # xx	2  j < 2=1+1  1 = i
    # xxx	3  j < 2=2+1  2 = i
    # xxxx	4  j < 4=3+1  3 = i
    # xxxxx	5  j < 5=4+1  4 = i
    # 外循环控制行号,内循环控制 'x'的个数
    i = 0
    while i < 5:
    	j = 0
    	while j < i + 1:
    		print('x',end='')
    		j += 1
    	else:
    		print()		# print() 自带换行功能
    	i += 1
    
    运行结果:
    x
    xx
    xxx
    xxxx
    xxxxx
    

2. break 和 continue

  • 2.1 break 可以立即退出循环语句,包括退出else语句

    • 示例:
    i = 0
    while i < 5:
     	i += 1
     	if i == 3:
       		 break
    	print(i, end = '\t')
    else:
    	print(f"循环正常结束 i = {i}")
    if i != 5:
    	print(f'break中断 i = {i}')
    
    • 无break的循环运行结果:
      在这里插入图片描述
    • 有 break的循环运行结果:
      在这里插入图片描述
  • 2.2 continue 用来跳过当次循环

    • 示例:
    i = 0
    while i < 5:
    	i += 1
    	if i == 3:
        	continue
    	print(i, end = '\t')
    else:
    	print(f"循环正常结束 i = {i}")
    if i != 5:
    	print(f'break中断 i = {i}')
    
    • 运行结果:
      在这里插入图片描述

3. 列表

  • 3.1 序列

    • 概念:序列是python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
    • 可变序列(序列中元素可以增删改): 列表list 字典dict
    • 不可变序列(序列中的元素不可增删改) 字符串(str) 元组(tuple)
    • 关于可变序列与不可变序列的含义,会在本文最后以列表和字符串举例说明
  • 3.2 列表的快速入门

    • 概念:
      • 列表是python中的一个对象
      • 列表是有序的,可以保存多个数据
      • 列表可以存储任意类型的数据
    • 列表创建: 通过[]来创建一个空列表
      • 示例:
      import operator
      l = []  # 创建一个空列表
      print(type(l))
      # 列表的有序性证明
      l1 = [1,2,3,4,5]
      l2 = [5,1,2,3,4]
      print(operator.eq(l1,l2))   # 判断两个列表是否相等
      # 列表中可存储任意类型的元素
      l = ['python',1,3,True,None,[4,5,6]]  
      print(len(l))
      
      • 运行结果:
        在这里插入图片描述
    • 列表中可以通过索引index或下标来获取列表中的元素
    • 索引(下标)从0开始 ,依次类推,列表中最后一个索引是 len(列表长度)-1 或 -1
      在这里插入图片描述
  • 3.3 切片

    • 概念:
      • 切片是指从现有的列表中获得一个子列表,但不改变原列表
    • 语法:
      • 列表[起始:结束:步长]
      • 通过切片获取元素时,会包含起始位置的元素,不会包括结束位置的元素,*类似数学中的左闭右开区间 例如:[1,3) 区间中包含1,2两个元素*
        • 示例
          hero = ['钢铁侠','葫芦娃','蜘蛛侠','黑寡妇','蚁人','美国队长']
          print(hero)
          print(hero[0:3])	# 这里的 3 千万不能理解为切片三个元素,请参照下一行代码
          print(hero[2:4])    # 这里的 4 应该是指切片的结束位置,初学者要注意这个坑
          
        • 运行结果:
          在这里插入图片描述
    • 起始位置和结束位置的索引可以不写
      • 起始位置省略:会从索引为0的位置开始截取到结束的元素,但不包含结束的元素
      l = ['a','b','c','d','e','f','g','h']
      print(l[:3])
      运行结果:
      ['a', 'b', 'c']	
      
      • 结束位置省略:会从当前的开始位置一直截取到最后
      l = ['a','b','c','d','e','f','g','h']
      print(l[5:])
      运行结果:
      ['f', 'g', 'h']
      
      • 省略开始和结束:会截取整个列表的所有元素
      l = ['a','b','c','d','e','f','g','h']
      print(l[:])
      运行结果:
      ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
      
    • 步长 默认为1 可以省略不写
      	l = ['a','b','c','d','e','f','g','h']
      	print(l[::2])
      	运行结果:
      	['a', 'c', 'e', 'g']
      	```
      
    • 不能为0 但可以为负
      	l = ['a','b','c','d','e','f','g','h']
      	print(l[::-1])
      	运行结果:
      	['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']
      	print(l[::0])    # 切片步长不能为0
      	运行结果:
      	ValueError: slice step cannot be zero   
      	```
      
  • 3.4 通用操作

    • +*
      • + 可以将两个列表拼接成一个列表
        在这里插入图片描述
      • * 可以将列表重复指定的次数(注意2个列表不能够做乘法,只能和整数做乘法运算)
        列表数乘
    • in ,not in
      • in 用来检查指定元素是否在列表当中
        在这里插入图片描述
      • not in 用来检查指定元素是否不在列表当中
        在这里插入图片描述
    • len() 获取列表中元素的个数(重复元素也计算)
      在这里插入图片描述
    • max() 获取列表中的最大值
    • min() 获取列表中的最小值
    l = ['a','b','c','d','e','f','g','h']
    print('l中的最大值 %s'%max(l))
    print('l中的最小值 %s'%min(l))
    运行结果:
    l中的最大值 h
    l中的最小值 a
    
    • index()方法:获得指定元素在列表中第一次出现的位置(或索引),如果找不到,会报错

      • 语法:list.index(x [, start][,end])
        • 第一个参数 指定获取的元素名
        • 第二个参数 表示查找的起始位置
        • 第三个参数 表示查找的结束位置
      • 示例:
      hero = ['钢铁侠','葫芦娃','蜘蛛侠','葫芦娃','黑寡妇','蚁人','蜘蛛侠','美国队长']
      
      print(hero)
      print(hero.index('葫芦娃'))        # 指定一个参数
      print(hero.index('葫芦娃',2))      # 指定两个参数
      print(hero.index('葫芦娃',6,9))    # 指定三个参数
      
      • 运行结果:
        在这里插入图片描述
    • count() 统计指定元素在列表中出现的个数,找不到返回0个

      hero = ['钢铁侠','葫芦娃','蜘蛛侠','葫芦娃','黑寡妇','蚁人','蜘蛛侠','美国队长']
      
      print(hero)
      print('葫芦娃 %d 个'%hero.count('葫芦娃')) 
      print('钢铁侠 %d 个'%hero.count('钢铁侠'))
      print('蜘蛛侠 %d 个'%hero.count('蜘蛛侠')) 
      print('齐天大圣 %d 个'%hero.count('齐天大圣')) 
      
      • 运行结果:
        count
  • 3.5 修改列表

    • 索引:通过列表的索引修改指定的值
      hero = ['钢铁侠','葫芦娃','蜘蛛侠','葫芦娃','黑寡妇','蚁人','蜘蛛侠','美国队长']
      
      print(f'修改前{hero}')
      hero[1] = '齐天大圣'
      print(f'修改后{hero}')
      
      • 运行结果:
        在这里插入图片描述
    • 切片:就是给切片的内容重新赋值,但是赋值的内容必须是一个序列
      • 示例1
      print(f'修改前{hero}')
      hero[0:3] = '我是谁'
      print(f'修改后{hero}')
      
      • 运行结果:
        在这里插入图片描述
      • 示例2:
        print(f'修改前{hero}')
        hero[0:3] = 123   # 123 不是一个序列,会出错
        print(f'修改后{hero}')
        
      • 运行结果:
        在这里插入图片描述
      • 示例3:
        # 如果替换的元素大于原有的元素,多余的元素会往后顺延
        print(f'修改前{hero}')
        hero[0:3] = ['青龙','白虎','朱雀','玄武','齐天大圣']
        print(f'修改后{hero}')
        
      • 运行结果:
        在这里插入图片描述
      • 示例4:
        # 向列表开头插入元素
        print(f'修改前{hero}')
        hero[0:0] = ['青龙']
        print(f'修改后{hero}')
        
      • 运行结果:
        在这里插入图片描述
      • 当切片时设置了步长时,序列中的元素的个数必须和切片中元素的个数保持一致
        • 示例1:
        print(f'修改前{hero}')
        print(hero[::2])
        hero[::2] = ['齐天大圣'] 		# 元素个数为1
        print(f'修改后{hero}')
        
        • 运行结果:
          在这里插入图片描述
        • 示例2:
          print(f'修改前{hero}')
          print(hero[::2])
          hero[::2] = ['青龙','白虎','朱雀','玄武']
          print(f'修改后{hero}')
          
        • 运行结果:
          在这里插入图片描述
    • 删除列表中的内容
      • 方法一:通过索引删除

        print(f'修改前{hero}')
        del hero[2]
        print(f'修改后{hero}')
        
      • 运行结果:
        在这里插入图片描述

      • 方法二: 切片删除

        print(f'修改前{hero}')
        #del hero[0:2]     # 切片删除1
        hero[0:2] = []        # 切片删除2
        print(f'修改后{hero}')
        
        • 运行结果:
          在这里插入图片描述
    • 由上可知,列表元素能进行增、删、改,因此列表是可变序列
    • 字符串是不可变序列
      在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值