本章有部分超纲内容,可作为了解,提前学习学习。

列表

列表,主要使用[ ]来表示,我这里的加了一个空格,便于看清哦!看下面的例子

# 这里声明一个变量,后续便于输出class_name = ["10", "20", "30"]

上述就是一个简单的列表。那么如何访问呢,其实跟我之前的一样,直接打印就好了。另外,我们利用索引来取值,列表的左边第一个值,索引值为0,自左向右推,10索引值为0,20为1...

如上图所示。列表中的每一个值都会有对应的内存地址,我们看到的["10", "20", "30"]只是展现出来的value。而他们内部会有对应的内存地址去存储。如下:

a = [2,1]print(id(a[0]),id(a[1]))# 2613135173968 2613135173936

小例子:

# 这里声明一个变量,后续便于输出class_name = ["python", "java", "c", "php"]print(class_name)  # 打印class_name列表print(class_name[0])  # 索引输出pythonprint(class_name[1])  # 索引输出javaprint(class_name[-1])  # 这里的-1是打印列表最后一个值,从右往左索引值依次增加为:-1,-2...print(class_name[-2])  # 打印倒数第二个值

用上述的例子,我们可以恰当的使用其中一个值,上一节课讲过的哦:可以适当的举一反三哦!

# 这里声明一个变量,后续便于输出class_name = ["python", "java", "c", "php"]# 使首字母大写print(f"This is {class_name[0].title()}")

list()

下面我们将循环出来的数字变成列表形式

num = list(range(1,6))print(num)# [1, 2, 3, 4, 5]

也可以设置一定的步长,所谓的步长就是个几个数取一次值

num = list(range(1, 11, 2))print(num)# [1, 3, 5, 7, 9]num = list(range(11, 1, -1))print(num)# [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]

range这里的可以这样理解:range(1,6),在for循环中使用我们定义的num变量进行1~6之间的数字循环,但是因为range函数的本身的原因,所以6是不会打印的,如果要打印1~6所有的数字,就需要改一下range里面的参数。

对于字符串,list还能这个用:

print(list("托马有一只小羊"))# ['托', '马', '有', '一', '只', '小', '羊']

可以将一个字符串直接转为列表。

列表推导式

print([x*2 for x in range(6)])# [0, 2, 4, 6, 8, 10]a= []for i in range(6):    x = i * 2    a.append(x)print(a)

上述例子中,两者是一样的,或许各位对于第二个例子有更简单的写法,这里只是举例便于了解。

对于上述例子我们还能增加一些其他的使用,比如if判断:

print([x*2 for x in range(6) if x%2==0])# [0, 4, 8]

对于模除后满足结果为0的才输出,if判断此处作为了解,后续会详细讲解。

修改元素

# 这里声明一个变量,后续便于输出class_name = ["python", "java", "c", "php"]# 打印原来的值,便于比较print(class_name)# 利用索引进行修改里面的值class_name[0] = "html"    #修改列表的第一个元素class_name[1] = "大数据"    #修改列表的第二个元素print(class_name)

添加元素

添加的值附加在列表的末尾

# 这里声明一个变量,后续便于输出class_name = ["python", "java", "c", "php"]# 打印原来的值,便于比较print(class_name)# 在列表的末尾添加一个元素class_name.append("html")print(class_name)

还有一种extend,两者有什么区别?

list_ = ['a', 'b', 'c']list_1 = ['a', 'b', 'c']list_.append(['d', 'e'])list_1.extend(['f', 'g'])print(list_, list_1)

['a', 'b', 'c', ['d', 'e']] ['a', 'b', 'c', 'f', 'g']。extend() 方法只接受一个参数,而该参数总是一个列表,并 将列表 list_1 中所有的元素都添加到该列表中。 append() 方法只接受一个参数,但可以是任何数据类型。在此,对一个 3 元素列表调用 append() 方法,因为最后一个元素(刚刚 append[添加] 的元素) 本身 是个列表 。列表可包含任何类型的数据,包括其它列表。

插入元素

# 这里声明一个变量,后续便于输出class_name = ["python", "java", "c", "php"]# 打印原来的值,便于比较print(class_name)# 在列表索引值0的位置前面插入一个元素class_name.insert(0, "html")print(class_name)

删除元素

有两种方法,一种是.del,一种是.pop():两者的区别,让我们来理解一下吧:

del方法可以删除任意位置的列表元素,只需要知道它的索引值即可

删除后就无法再进行访问了

当你需要删除列表的值后,又需要使用它时,就可以用到.pop()方法了

.pop()是删除末尾的元素,也可以通过索引指定移出元素,这里的删除其实先当于将元素移出当前列表

class_name = ["python", "java", "c", "php"]# 通过索引来删除元素,删除后且无法再次使用del class_name[0]print(class_name)
# 这里声明一个变量,后续便于输出class_name = ["python", "java", "c", "php"]# 打印原来的值,便于比较print(class_name)# 移出末尾的值poppd = class_name.pop()# 打印我们之前移出的末尾的值print(f"This is {poppd.title()}")# eg:# 你也可以通过索引来指定移出哪个元素# poppd = class_name.pop(1)

根据值来删除元素:这个用法还是比较简单的,当你不知道想要删除的元素所处的位置时,就用指定值来删除指定元素.remove():

# 这里声明一个变量,后续便于输出class_name = ["python", "java", "c", "php"]# 打印原来的值,便于比较print(class_name)class_name.remove("java")print(class_name)

remove方法删除值后其实也可以使用,看下面的例子:

class_name = ["python", "java", "c", "php"]class_remove = "java" # 定义一个变量接受赋值,指定删除javaclass_name.remove(class_remove) # 删除列表中的值,因为前面我们已经指定的删除谁print(f"I like {class_remove.title()}")
# reverse\(\)方法```python# 反转class_name = ["python", "bird", "c", "app"]# 这里我们倒叙打印放在print里面直接打印的话就会是空值print(class_name.reverse())# 需要用变量直接使用函数,再通过打印才行哦。注意输出以下代码注释上述的printclass_name.reverse()print(class_name)

如果用到这个方法,你就得这么写了,不然打印出来就会是空值。

取值

取值是根据下标来取值的,从列表的第一个字符串开始,第一个字符串下标是0:

list_number = ['cat','dog','snake','elephant']print(list_number[0])print(list_number[1])print(list_number[2])#其对应的值是:#cat#dog#snake

负数取值

list_number = ['cat','dog','snake','elephant']print(list_number[-1])print(list_number[-2])print(list_number[-3])#其对应的值是:#elephant#snake#dog

范围取值

list_number = ['cat','dog','snake','elephant']print(list_number[:3])print(list_number[1:3])print(list_number[1:])print(list_number[:-1])# 其对应的结果是:#['cat', 'dog', 'snake']#['dog', 'snake']#['dog', 'snake', 'elephant']#['cat', 'dog', 'snake']

列表长度

list_number = ['cat','dog','snake','elephant']print(len(list_number))#其结果是:#4

下标改值

list_number = ['cat','dog','snake','elephant']list_number[1] = 'nono'print(list_number)#    其结果是:#['cat', 'nono', 'snake', 'elephant']

连接与复制

list_number = ['cat','dog','snake','elephant']list_1 = ['tom','tim']print(list_number+list_1)#    其结果是:#['cat', 'dog', 'snake', 'elephant', 'tom', 'tim']#复制list_1 = ['tom','tim']print(list_1*3)#    其结果是:#['tom', 'tim', 'tom', 'tim', 'tom', 'tim']

循环列表

list_number = ['cat','dog','snake','elephant']for i in list_number:    print(i)#    其结果是:# cat# dog# snake# elephant

in和not in操作

用于判断列表中是否存在一个值

list_number = ['cat','dog','snake','elephant']print('cat' in list_number)    #Tprint('cat' not in list_number)    #F

列表操作

查找

#返回值的下标,如果重复值,只会返回第一次的值list_number = ['cat','dog','snake','elephant']print(list_number.index('dog'))

添加

# 可以指定添加到某个位置list_number = ['cat','dog','snake','elephant']list_number.insert(1,'monkey')print(list_number)#  其结果是:#  ['cat', 'monkey', 'dog', 'snake', 'elephant']
# 只能添加到末尾的位置list_number = ['cat','dog','snake','elephant']list_number.append('monkey')print(list_number)# 其结果是:# ['cat', 'dog', 'snake', 'elephant', 'monkey']

删除

list_number = ['cat','dog','snake','elephant']list_number.remove('cat')print(list_number)# 其结果是:# ['dog', 'snake', 'elephant']
list_number = ['cat','dog','snake','elephant']del list_number[1]print(list_number)# 其结果是:# ['cat', 'snake', 'elephant']

排序

升序

# 按字母顺序进行排序list_number = ['c','d','s','a']# 默认是升序list_number.sort()print(list_number)# 其结果是:# ['a', 'c', 'd', 's']# 如果想要降序list_number.sort(reverse=True)

降序

list_number = ['c','d','s','a']list_number.sort(reverse=True)
class_name = [9,3,4,6]a = sorted(class_name,reverse=True)print(a)# [9, 6, 4, 3]

倒序

也可称之为逆序

#第一种list_number = ['c','d','s','a']list_number.reverse()print(list_number)# 其结果是:# ['a', 's', 'd', 'c']#第二种class_name = ["python", "bird", "c", "app"]print(sorted(class_name))# 再次打印验证是否是临时修改print(class_name)# ['app', 'bird', 'c', 'python']# ['python', 'bird', 'c', 'app']

当然第二种可以用于创建一个新的列表:

class_name = ["python", "bird", "c", "app"]print(id(class_name))class_name = sorted(class_name)print(id(class_name))# 2781239629440# 2781239597888

注意这两内存地址不一样,所以在sorted后,class_name就是一个新的列表了。

reversed

对于倒叙还有第三种写法,但是这里为什么要单独说明呢。因为reversed返回的是一个迭代器,且reversed不对原列表做任何修改。只能用一次。再次对其print的时候就是个空列表了。

class_name = [9,3,4,6]a= reversed(class_name)print(a)print(list(a))# <list_reverseiterator object at 0x000001D6B94FEB80># [6, 4, 3, 9]# []

随机排序

import randoma = [7,2,3,5]random.shuffle(a)print(a)

每一次输出的排序会不一样。

拼接

list_number = ['c','d','s','a']list_1 = ['托马']list_number.extend(list_1)print(list_number)# 其结果是:# ['c', 'd', 's', 'a', '托马']

弹出

list_number = ['c','d','s','a']list_1 = []n = list_number.pop(1)print(list_number)list_1.append(n)print(list_1)# 其结果是:# ['c', 's', 'a']# ['d']

指定弹出索引位置的值,我们还可以进行调用哦。

结合字符串操作

list_number = ['tom','luci','xifa','BOB']for i in list_number:    print(i.upper())# 其结果是:# TOM# LUCI# XIFA# BOB

这里只举出了全部大写的例子,结合字符串所学,写法一致!

循环

# 定义一个列表name_study = ['chinese','english','math','pe']# 使用for循环,定义一个变量循环列表for i_name in name_study:#打印我们的循环结果    print(i_name)

这里这个i_name是新定义的一个变量,用于获取name_study里面的值。

# 结果chineseenglishmathpe

统计

num = [20, 30, 50, 80, 40, 10]print(min(num))    # 最小的一个数print(max(num))    # 最大的一个数print(sum(num))    # 列表的数字和

切片

切片呢,是在列表中我们可以使用索引值来处理它的一部分元素,就不需要一个一个再打印了,对于这种python中称之为切片,看例子:

# 创建一个列表num = ['python', 'java', 'c', 'php', 'html', 'c++']# 利用索引值来完成切片print(num[0:3])

这里的[0:3],0是起始索引位置,3是终止索引位置,3的位置是终止位置不取,其结果是:

['python', 'java', 'c']

这就是切片,小伙伴明白了吗,能够使用索引值来处理列表的部分元素的操作就是切片哦!!!

切片还有很多的操作哦,看接下来的介绍:

写法:

num[start, end, step] start:开始切片的位置(包含) end:结束切片的位置(不包含) step:间隔数据个数

上面我们讲的是顺序切片,这回我们讲倒叙切片:

num = ['python', 'java', 'c', 'php', 'html', 'c++']print(num[-2:])

例子解释:倒叙,按循序切片,从倒数第二个开始往后取值,其结果是:

['html', 'c++']

间隔位置切片:

num = ['python', 'java', 'c', 'php', 'html', 'c++']print(num[1::2])
例子解释:间隔位置切片,从索引位置1开始取值,途中每隔两个取一个当前值

列表旋转:

num = ['python', 'java', 'c', 'php', 'html', 'c++']print(num[::-1])

例子解释:顾名思义就是将列表旋转倒过来打印出来,前面讲过的倒叙,这里是另一种方法。其结果是:

['c++', 'html', 'php', 'c', 'java', 'python']

接下来就是我么的一个小实战:

num = ['python', 'java', 'c', 'php', 'html', 'c++']print(num[4:1:-1])

** 在这里,可以举一反三的去思考思考,自己也可以举例然后使用切片去将列表中想要打印的元素打印出来**!

解释:因为列表的操作,-1将列表旋转,然后从索引值1的位置开始取值,到索引值4的位置,但是4不取,因为4的位置是终止位置。

接下来我们就开始进入下一个实用例子,遍历切片:

num = ['python', 'java', 'c', 'php', 'html', 'c++']for num_first in num[:3]:    print(num_first)

遍历切片,其实就是使用for循环去循环我们想要打印列表中的部分元素哦。num[:3]就是前三个元素,然后我们定义一个变量num_first,去循环前三个元素,最后打印我们定义的变量。

遍历切片,不懂的小伙伴也可以理解为循环想要输出的元素。

上述例子看不明白的看看下面这个例子,清安将上面的多定义了一个变量,便于小伙伴理解怎么回事哦!

num = ['python', 'java', 'c', 'php', 'html', 'c++']# 定义一个变量,接受我们想要输出的部分元素,也是就切片部分num_list = num[:3]for num_first in num_list:    print(num_first)

复制一个列表:

创建一个始于第一个元素,终于最后一个元素的切片,就是我们想要复制的列表,即副本

num = ['python', 'java', 'c', 'php', 'html', 'c++']number = num[:]print(number)

我们先定义一个变量使其等于已经定义的num列表切片,这个切片的写法就是num[:],然后我们输出number变量,就可以看到原列表的副本啦,就是我们所要的复制列表!!!

二维列表

学习了上面的内容,这里就直接看例题吧,俗称列表嵌套列表:

a = [['清安','有个小屋'],['里面的人很可爱']]print(a[0][0])# 清安

这里可能取值有点迷惑,作一下解释,第一个a[0]取值列表中第一个列表,也就是['清安','有个小屋'],a[0][0]最后的这个[0]取值是['清安','有个小屋']的列表中的索引位置0的值,也就是'清安'。

补充:

统计

a = ['qing','an','an']

操作

示例

解释

数量统计

a.count('an') 2次

统计'an'出现的次数

便捷的赋值

便捷的赋值语句

普通的赋值语句

a+=1

a = a+1

a-=1

a = a-1

a*=1

a = a*1

a%=1

a = a%1

a/=1

a = a/1

Python快速上手系列--列表--详解篇相关推荐

  1. Python快速上手系列--类--详解篇

    本章是自动化测试的真正开始,因为在后续的过程中,你会接触到unittest框架,pytest框架,而不仅仅只是写一个函数+selenium脚本这么简单了. 1.创建类 1.1.了解类 我们首先了解一下 ...

  2. Python快速上手系列--字典--详解实战篇

    本章字典篇,比较的重要,所以有比较多的练习小实战,一起来看看吧. 字典 什么是字典: 字典:是一系列的键值对,每一个键都会有对应的一个值关联,它们可以是数字 ,字符串,列表以及字典本身.用{}来表示. ...

  3. Python快速上手系列--循环结构--基础篇

    本篇将讲述前几章都有提起的循环,非常的重要,对于自动化测试的脚本来说,运用的都比较的频繁.好好看. if语句 首先我们先来学习一下if语句,因为它通常会和for循环搭配使用,频率极高. if 关键字或 ...

  4. Python爬虫入门系列——Urllib详解

    Python爬虫入门系列--Urllib详解 1.背景 1.1 初识爬虫 1.2 合法性 1.3 robots协议 2.要求 2.1 当前开发环境 2.2 编程基础 3.快速上手Urllib 3.1 ...

  5. python基础篇大合集,进程、装饰器、列表详解篇!

    进程以及状态 1. 进程 2. 进程的状态 进程的创建-multiprocessing 1. 创建进程 2. 进程pid 3. Process语法结构如下 4. 给子进程指定的函数传递参数 5. 进程 ...

  6. python基础篇大合集,进程、装饰器、列表详解篇

    1. 进程 程序:例如xxx.py这是程序,是一个静态的 进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元. 不仅可以通过线程完成多任务,进程也是可以的 2. 进 ...

  7. Python画图库Turtle库详解篇

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...

  8. 万字博文教你python爬虫XPath库【详解篇】

  9. thinkcmf5调用指定分类的二级_Tengine快速上手系列教程amp;视频:基于Python API的图片分类应用入门丨附彩蛋...

    前言:近期,Tengine团队加班加点,好消息接踵而来,OpenCV 4.3.0发布,OPEN AI LAB AIoT智能开发平台Tengine与OpenCV合作共同加速边缘智能,Tengine再获业 ...

最新文章

  1. think php 缩放图片,THINKPHP+JS实现缩放图片式截图的实现
  2. MySQL基础之DML语句
  3. 彩色BMP转换成灰度图的原理
  4. jQuery概述、优点、使用步骤、入口函数、jQuery对象和DOM对象之间的转换、层级选择器、属性选择器、筛选选择器、节点选择器
  5. Lua语言模型 与 Redis应用
  6. [再寄小读者之数学篇](2014-07-27 $H^{-1}$ 中的有界集与弱收敛极限)
  7. BZOJ 3626 LCA(离线+树链剖分+差分)
  8. inout口简单说明
  9. ITIL规范(持续更新)
  10. Deecamp夏令营面试及结营体验
  11. 一个检查输入内容的 AppCompatEditText 。
  12. Python3 matplotlib 将图片转华为png格式图片数据
  13. 【初识C语言:编程小白与C语言say hello的正确打开方式(绘制草图阶段)】
  14. App手机应用自建平台 无需编码技术 轻松制作
  15. Kafka源码-发送器Sender类型的的sendProducerData 模版方法
  16. 转『天涯杂谈』那些让人惊艳的歌词(整理版),很经典,与大家分享。
  17. 机器学习中的范数理解(L0,L1,L2)
  18. 力矩传感器使用特别注意事项有哪些?
  19. JetBrains DataGrip安装和使用的详细教程
  20. 家庭网络文件共享的几种方式

热门文章

  1. 如何将mkv格式电影转换为MP4格式
  2. 怎么能把Excel数据导入到这个水经注软件里?
  3. 干眼症产品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. 苏轼《水调歌头·丙辰中秋》
  5. 计算机专业 本硕连读,麻省理工大学计算机专业本硕连读几年?
  6. 计算机是如何识别内核态和用户态,用户态和内核态区分(二十七)
  7. 计算机网络基础感想300字,互联网络观后感300字
  8. 如何监控自己手机上的网络访问
  9. VS Code 使用火狐 FireFox 调试网页
  10. Python中strip用法