循环和列表

一、循环(***)

1.1 概念

广义:一个周期现象或者重复出现的情况,这种状态被称为循环

狭义:在满足条件的情况下,反复执行某一段代码,在编程语言中出现的这种现象被称为循环。被反复执行的这段代码被称为循环体

当反复执行某段代码时,需要在合适的时机将循环停止下来,否则会产生死循环

Python中提供的循环语句:while语句,for-in语句

1.2 使用

1.2.1 while语法

while 表达式:
   循环体

工作原理:遇到while语句时,首先计算表达式的值,如果表达式的值为假,则跳过整个while语句,继续执行下面的代码;如果表达式的值为真,则执行循环体

1.2.2 while-else

while 表达式:
    循环体
else:
   【else语句块】

说明:当while语句执行完成之后,执行【else语句块】,如果用break跳出循环则不执行else

1.2.3死循环

在循环语句中,表达式永远为真的循环

while True:
    #循环体

while 1:
    #循环体

1.2.4 while语句的嵌套

while 条件1:     #外层循环
     【语句块A】
      while 条件2:   #内存循环
            【语句B】

执行流程:首先判断外层循环的条件1,如果为真,则执行循环体中的【语句块A】,执行内层循环,判断条件2是否成立,如果成立,执行内层循环的【语句块B】,执行完内层循环后,重新判断外层循环条件....

  • 特点:外层循环走一步,内层循环执行一遍

  • 外层循环和内层循环的循环变量必须不同

演示:

打印九九乘法表

1.3. break和continue、exit()

continue 语句用来跳过当前循环的剩余语句,然后重新判断循环条件,开启下一轮循环。continue只能出现在while和for循环中

break用于结束当前循环。只对当前这一重循环起作用。break只能出现在循环中

exit()结束程序

二、列表

在python中,有这样一些类型,它们的成员是有序排列的,并且可以通过下标访问成员,这些类型称之为序列,包括:列表、range、元组和字符串;其中列表的成员可修改,属于可变序列,字符串和元组,成员不可修改,属于不可变序列。序列有共同操作:

成员关系运算(in,not in)

连接操作(+)

重复操作(*)

切片操作([::])

1 概述

引出:存储一个数据可以采用变量

问题:需要同时存储多个数据,该怎么做?

#需求:有5个人的年龄,求平均年龄
age1 = 10
age2 = 32
age3 = 43
age4 = 18
age5 = 90
average = (age1 + age2 + age3 + age4 + age5) / 5

解决:容器【Python提供了一种数据结构list,可以同时存储多个数据】

本质:一种有序的集合

2 创建列表

语法:列表名 = [列表选项一,列表选项二,列表选项三.....]

说明:使用[]表示列表,列表名其实就是标识符

将列表中的列表选项被称为元素

列表中的元素分别被编了号,这些编号被称为索引【下标,角标】

列表索引:

从左向右开始编号:0,1,2....n-1

从右向左编号: -1,-2......

-7 -6 -5 -4 -3 -2 -1

[10 , 20 , 30 , 40, 50 ,90, 80]

0 1 2 3 4 5 6

list1 = []  #创建一个空列表
list2 = [10,9,True,'张三']
list3 = list()  #创建一个空列表
list4 = list('hello world)  # ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']

3.列表中元素的访问

列表中元素不能整体访问,只能单个存取

3.1取值

语法:列表名[索引]

list1 = [1,2,4,3,8]
num = list1[2]
print(num)

#下标越界,引发IndexError, 需要自己确定不要越界
print(list1[5])

3.2 修改

语法:列表名[索引] = 新的元素值

list1[2] = 888
print(list1)

3.3 遍历

列表的遍历就是访问列表的每一个元素,可以使用while循环和for-in循环。经常使用for-in循环遍历列表

for-in语法:

for 变量名 in 列表:
    语句A
else:
     语句B

说明:主要用于遍历序列【遍历:依次访问序列中的每一个元素,获取元素值】

工作原理:按照顺序获取列表中的每个元素,赋值给变量,再执行语句A,以此类推,直到列表中的元素全部获取为止,循环终止后执行else语句块。

不要在for-in循环中添加或删除元素

#只能获取元素,不能得到元素的下标
for value in list1:
    print(value,end=' ')

#index表示下标,num表示元素值
#enumerate将列表变成一个索引序列,同时包含下标和数据
for index,num in enumerate(list1):
   print(index,num)

#二维列表的遍历,循环嵌套
l1 = [[1,2],[3,4],[5,6]]
for elem in l1:
   for value in elem:
       print(value, end=' ')
   print('')

4.序列的通用操作

#1.列表组合  将两个列表拼接为一个列表
#直接使用加号
list1 = [43,65,76,6]
list2 = [45,77,90,11,2,4,66]
print(list1 + list2)  #[43,65,76,6,45,77,90,11,2,4,66]  产生一个新列表

#2.列表重复
#直接使用乘号 列表内容重复指定遍数,产生一个新列表
print(list1 * 2)  # [43,65,76,6,43,65,76,6]

#3.成员操作
#成员运算符:in      not in
#运算的结果为布尔值
list3 = ["hello",False,189,"good"]
print(189 in list3) #True
print(180 not in list3)  #True

#4.列表的截取【分片,切片】
#语法:列表名[开始下标:结束下标:步长],表示按指定步长获取从开始下标到结束下标之间的元素,
#     结果为一个新的列表
#注意:包头不包尾【前闭后开区间】   [开始下标,结束下标)
#步长:默认是1,正数表示从左向右取,负数表示从右向左取
list1 = [10,20,30,40,50,60]
print(list1[0:3])   #[10,20,30]
print(list1[:3])    #[10,20,30]
print(list1[:])     #[10,20,30,40,50,60] 从头取到尾
print(list1[::2])     # [10,30,50] 隔一个取一个
print(list1[3::-1])  #[40, 30, 20, 10]  从右向左取
print(list1[-1:-3:-1]) #[60, 50] 从右向左取
print(list1[2:]) #[30, 40, 50, 60] 从下标为2的元素开始取到末尾
print(list1[-3::-1])#[40, 30, 20, 10] 从右向左取到第一个元素

#5.列表长度
print(len(list1))

#6.列表最大值和最小值、求和
print(max(list1))
print(min(list1))
print(sum(list1))

5.列表的操作

l1 = [10,20,30]

5.1 增加元素

#1. list.append(obj) 在列表末尾添加新的元素
l1.append(40) #可以是普通元素
#l1[len(l1):len(l1)] = [40] #等价于l1.append(40)
print(l1)     # [10,20,30,40]
l1.append([50,60]) #也可以是其它列表、元组、字典、集合等对象
print(l1)     # [10,20,30,40,[50, 60]]

#2. list.extend(obj)  在列表的末尾一次性追加另一个列表中的元素
#obj不能是单个数值,可以是列表等可迭代对象
l1.extend([70,80])  #只是将元素添加到l1末尾
print(l1)

#3. list.insert(i,obj) 在指定下标i的位置插入一个新元素,原来的元素后移,不会覆盖
l1.insert(1,-20)
print(l1)    #[10, -20, 20, 30, 70, 80]
l1.insert(0,[1,2,3])
print(l1)   #[[1, 2, 3], 10, -20, 20, 30, 70, 80]

5.2 删除元素

#1. list.pop(i) 删除指定下标的元素,如果下标越界,会出现IndexError
value = l1.pop()   #删除最后一个元素,并返回该元素的值
print(value)
print(l1)
l1.pop(0)   #删除下标为0的元素
print(l1)

#2. list.remove(x) 删除列表中第一个值等于x的元素,删除的时候是从左向右找到第一个等于x的元素删除
l1.remove(-20)
print(l1)
# l1.remove(100) 如果列表中没有该值,会引起错误:ValueError

#3.按下标删除
del l1[0]
del l1[0:2]  #删除第一个和第二个元素

#3 list.clear()  清空列表
l1.clear()
print(l1)  #[]

5.3 查找元素

#1. list.index(x,start,end) 在[start  end)范围内查找第一个等于x的元素的下标
#参数说明: x 要查找的元素; start,开始下标;end 结束下标,不包含结束下标
#返回值:如果有值等于x的元素,返回其下标,如果不存在值等于x的元素,会引发ValueError
print(l1.index(10))    #1
print(l1.index(330,2,5))  #4

#2 list.count(x) 查找列表中x出现的次数,如果没有x,返回0
print(l1.count(30))   #2
print(l1.count(99))   #0 不存在99

5.4 列表反转

#把列表元素逆序排列
l1.reverse()
print(l1)

5.5 列表排序

#1. list.sort(key=None,reverse=None) 列表方法,实现列表就地排序,不产生新列表
#参数:key参数指明用哪个函数进行排序,默认值是None,用<进行比较  可选参数
     reserse:布尔值,默认值是None,也就是假,从小到大排序,如果设置为True,则从大到小排序,可选参数
l1 = [90,30,70,20,10,60]
print(l1)  # [90, 30, 70, 20, 10, 60]
l1.sort()
print(l1)  # [10, 20, 30, 60, 70, 90]

6 二维列表

就是列表的元素还是列表

list1 = [[1,2,3],[4,5,6]]
#获取元素
print(list1[0][0],list1[0][1],list1[0][2]) #1  2  3

Day04-循环和列表相关推荐

  1. 完美解决小程序一维数组循环渲染列表不够用问题

    完美解决小程序一维数组循环渲染列表不够用问题 参考文章: (1)完美解决小程序一维数组循环渲染列表不够用问题 (2)https://www.cnblogs.com/jessical626/p/6363 ...

  2. python字典生成式_【IT专家】Python 简化for循环:列表,集合与字典生成式

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Python 简化 for 循环:列表,集合与字典生成式 2018/03/06 28 # 使用列表生成选择特定的行 my_data = [[1,  ...

  3. MySQL存储过程使用游标循环数据列表

    本篇文章主要讲解,我的一个案例,使用存储过程和游标循环数据列表,并且做一些操作,比如保存一些数据,修改一些数据: 1.需求? MySQL使用存储过程循环数据列表? 2.先描述下MySQL有哪些循环的语 ...

  4. LeetCode 708. 循环有序列表的插入

    文章目录 1. 题目 2. 解题 1. 题目 给定循环升序列表中的一个点,写一个函数向这个列表中插入一个新元素,使这个列表仍然是循环升序的. 给定的可以是这个列表中任意一个顶点的指针,并不一定是这个列 ...

  5. pythonfor循环列表排序_Python使用for循环对列表内元素进行排序方法

    这篇文章介绍Python使用for循环对列表内元素进行排序方法list = [13, 22, 6, 99, 11] for m in range(len(list)-1): for n in rang ...

  6. python for循环例子_Python for循环生成列表的实例

    Python for循环生成列表的实例 一般Python for语句前不加语句,但我在机器学习实战中看到了这两条语句: featList = [example[i] for example in da ...

  7. python: for循环时列表长度改变,会发生什么?

    for循环时列表长度改变,会发生什么? 以以下两种形式为例: # 第一种形式 for i in li: # 第二种形式 for i in range(len(li)) 先说结论: 无论是哪种遍历,都是 ...

  8. educoder 2-2Python 计算思维训练——循环与列表(二)

    目录 第3关:打印新的列表 第2关:循环与列表 - 精确华氏-摄氏温度转换表 第1关:循环与列表 - 近似华氏-摄氏温度转换表 第3关:打印新的列表 def Append(primes,p):#在此处 ...

  9. 【游戏开发实战】Unity循环复用列表,支持不规则尺寸(对象池 | UGUI | ScrollRect | Demo源码)

    文章目录 一.前言 二.使用方法 1.创建Scroll View 2.设置Scroll View参数 2.1.调整宽高 2.2.删除Scrollbar滑块 2.3.设置item模板: Item Tem ...

  10. (四)52周存钱挑战3.0-----for循环遍历列表、range()

    for 循环 • 使用for语句可以循环遍历整个序列的内容for < x > in < list1 >:<body> • 循环变量x在每次循环时,被赋值成对应的元素 ...

最新文章

  1. Windows 10 周年更新后的 Edge 14 的 HierarchyRequestError 报错
  2. vnctf——babyvm
  3. datastage 函数_DataStage_Transformer常用函数
  4. 毕业两年程序员Java学习路线
  5. 什么是JSX、是如何使用以及注意事项
  6. java聚群_人工鱼群算法超详细解析附带JAVA代码
  7. php避免超卖,thinkphp防止超卖
  8. ElasticSearch读流程
  9. 大数据之大数据的典型应用
  10. 测试电脑的软件3dm,有用的小工具检测你的电脑能否运行Oculus Rift
  11. R语言命令行写linux,如何在Linux上编写和使用R脚本
  12. Linux内核版本说明
  13. 【Web技术】1274- 深入浅出前端监控
  14. 计算机网络第一章知识总结
  15. 【STM32H7教程】第87章 STM32H7的SDMMC总线基础知识和HAL库API
  16. css仿cs1.6模型,最新CS1.6模仿样式武器模型
  17. 使用备份的控制文件恢复数据库
  18. unittest自动化测试-requests库实现http请求与requests库离线安装
  19. 学习日志 -- Day02
  20. wechat-web-devtools 之linux

热门文章

  1. ffmpeg分析系列
  2. JDK8 集合排序 xxxList.stream.sorted(...)
  3. 深入理解 Git 的实现原理
  4. You can‘t specify target table ‘XXX‘ for update in FROM clause
  5. [php] 高级教程
  6. C#指南,重温基础,展望远方!(4)表达式
  7. Oracle传输表空间介绍
  8. Npgsql使用入门(三)【批量导入数据】
  9. UESTC 250 windy数 数位dp
  10. [备忘]Visual Studio常用小技巧