list列表

关注公众号“轻松学编程”了解更多。

1.概述:

通过前两天的学习,我们知道变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班级有20个人,现在求班级的平均年龄。

若按照之前的方式来解决

age1 = 10
age2 = 12
...
age20 = 12
average = (age1 + age2 +...+age20)/20

在这里,很显然这种方法显得很麻烦,而python提供了一种解决方案,就是使用列表,可以随时添加和删除其中的元素。

本质:list列表的本质是一种有序的集合

2.创建列表

语法: 列表名 = [元素1,元素2,元素3…说明:列表中的选项被称为元素,跟string类似,下标也是从0开始计数

使用:创建列表

#创建空列表
list1 = []
#创建带有元素的列表
list2 = [10, 20, 30, 10]
print(list2)
list3 = list(range(1,10))
list4 = [i for i in range(10)]
print(list3)
print(list4)
输出:
[10, 20, 30, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

在列表中元素的数据类型可以不同(灵活性)

list3 = [33, "good", True, 10.32]
print(list3)
输出:
[33, 'good', True, 10.32]
3.列表元素的访问
3.1 列表的取值

功能:访问list列表中元素值

语法:列表名[索引]

list4 = [22, 33, 12, 32, 45]
#下标从0开始,最大值为len(list4)-1
print(list4[0])
输出:
22

注意:当索引值大于len(list4)-1的时候,会出现以下错误:

print(list4[5])
IndexError: list index out of range

这个错误就是下标越界【下标超出了可表示的范围】

3.2 列表元素的替换

功能:更改列表元素的值

语法:列表名[下标] = 值

list4 = [22, 33, 12, 32, 45]
list4[0] = "hello"
print(list4[0])
print(list4)
输出:
hello
['hello', 33, 12, 32, 45]
4.列表操作

4.1 列表组合

语法: 列表3 = 列表1 + 列表2

list1 = [1, 2, 3]
list2 = ['hello', 'yes', 'no']
list3 = list1 + list2
print(list3)
输出:
[1, 2, 3, 'hello', 'yes', 'no']

4.2 列表重复

语法: 列表2 = 列表1 * n

list1 = [1, 2, 3]
list2 = list1 * 2
print(list2)
输出:
[1, 2, 3, 1, 2, 3]

4.3 判断元素是否在列表中

语法:元素 in 列表

若存在则返回True,否则返回False

list1 = [1, 2, 3]
print(1 in list1)
输出:
True

4.4 列表截取

语法:列表[start: end] 表示获取从开始下标到结束下标的所有元素[start, end)

list1 = [1, 2, 3, 'hello', 'yes', 'no']
print(list1[2:4])
#若不指定start,则默认从0开始截取,截取到指定位置
#若不指定end,则从指定位置开始截取,截取到末尾结束
输出:
[3, 'hello']

4.5 二维列表

语法:列表 =[列表1,列表2,列表3,… ,列表n]

#创建二维列表,即列表中的元素还是列表
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]

4.5 二维列表取值

语法:列表名【下标1][下标2]

注意:下标1代表第n个列表(下标从0开始),下标2代表第n个列表中的第n个元素

list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
print(list1[0][0])
输出:
1
5.列表的方法

5.1 list.append(元素/列表)

功能:在列表中末尾添加新的元素【在原本的列表中追加元素】

注意:append()中的值可以是列表也可以是普通元素

>>> list1 = [3, 4, 6]
>>> list1.append(6)
>>> print(list1)
[3, 4, 6, 6]

5.2 list.extend(列表)

功能:在列表的末尾一次性追加另外一个列表中的多个值

注意:extend()中的值只能是列表/元组[一个可迭代对象],不能是元素。

>>> list1 = [1,2,3]
>>> list2 = [3, 4,5]
>>> list1.extend(list2)
>>> print(list1)
[1, 2, 3, 3, 4, 5]

5.3 list.insert(下标值, 元素/列表)

功能:在下标处插入元素,不覆盖原本的数据,原数据向后顺延。

注意:插入的数据可以是元素也可以为列表。

>>> list1 = [1,2,3]
>>> list1.insert(1,0)
>>> print(list1)
[1, 0, 2, 3]
>>> list1.insert(1,[2, 4, 8])
>>> print(list1)
[1, [2, 4, 8], 0, 2, 3]

5.4 list.pop(下标值)

功能:移除列表中指定下标处的元素(默认移除最后一个元素),并返回移除的数据。

>>> list1 = [1, [2, 4, 8], 0, 2, 3]
>>> list1.pop()
3
>>> print(list1)
[1, [2, 4, 8], 0, 2]
>>> list1.pop(2)
0
>>> print(list1)
[1, [2, 4, 8], 2]

5.5 list.remove(元素)

功能:移除列表中的某个元素第一个匹配结果

list1 = [1, 2,3,2,4]
list1.remove(2)
print(list1)
输出:
[1, 3, 2, 4]

5.6 list.clear()

功能:清除列表中所有的数据

>>> list1 = [1, 2, 3]
>>> list1.clear()
>>> print(list1)
[]

5.7 list.index(元素[, start】[, stop])

功能:从指定的范围的列表中找出某个值第一匹配的索引值

若不指定范围,则默认是整个列表。

>>> list1 = [1, 2, 3]
>>> list1.index(2)
1
>>> list1.index(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 4 is not in list

注意:若在列表中找不到这个元素,则会报错。

5.8 list.count(元素)

功能:查看元素在列表中出现的次数

>>> list1 = [1, 2, 3, 1]
>>> list1.count(1)
2

5.9 len(list)

功能: 获取元素个数

>>> list1 = [1, 2, 3, 1]
>>> len(list1)
4

5.10 max(list)

语法:获取列表中的最大值,元素是不同的数据类型时不能使用

>>> list1 = [1, 2, 3, 1]
>>> max(list1)
3

5.11 min(list)

语法:获取列表中的最小值,元素是不同的数据类型时不能使用

>>> list1 = [1, 2, 3, 1]
>>> min(list1)
1

5.12 list.reverse()

语法: 列表倒叙,直接修改原列表,返回值为None。

>>> list1 = [1, 2, 3, 1]
>>> list1.reverse()
>>> print(list1)
[1, 3, 2, 1]

5.13 list.sort()

语法:列表排序 默认升序,元素是不同的数据类型时不能使用

>>> list1 = [1, 2, 3, 1]
>>> list1.sort()
>>> print(list1)
[1, 1, 2, 3]
#倒序
list1 = [1, 2,3,2,4]
list1.sort(reverse=False)
print(list1)
输出:
[1, 2, 2, 3, 4]

5.14 浅拷贝

语法:list1 = [1, 2, 3]

​ list2 = list1

>>> list1 = [1, 2, 3, 1]
>>> list2 = list1
>>> print(list2)
[1, 2, 3, 1]
>>> print(id(list1))
4314476424
>>> print(id(list2))
4314476424
list1 = [1, 2,3,2,4]
list2 = list1
list2[0] = 0
print(list1)
输出:
[0, 2, 3, 2, 4]

注意:浅拷贝为引用拷贝,类似于快捷方式。

浅拷贝中一个变量发生改变,另一个也相应发生改变,

5.15 深拷贝

语法:list1 = [1, 2, 3]

​ list2 = list1.copy()

方式2:

list2 = list1[:]

>>> list1 = [1, 2, 3, 1]
>>> list2 = list1.copy()
>>> print(list2)
[1, 2, 3, 1]
>>> print(id(list2))
4314525320
>>> print(id(list1))
4314524808
list1 = [1, 2,3,2,4]
list2 = list1[:]
print(list2)
print(id(list1))
print(id(list2))
输出:
[1, 2, 3, 2, 4]
2485711112520
2485710239496

注意:深拷贝为内存拷贝,开辟了新的内存空间

5.16 list(元组)

功能:将元组转为列表

>>> list1 = list((1, 2, 3, 4))
>>> print(list1)
[1, 2, 3, 4]
6.列表的遍历

6.1 使用for循环遍历列表

语法:

for 变量名 in 列表 :

​ 语句

功能:for循环主要用于遍历列表

遍历:指的是依次访问列表中的每一个元素,获取每个下标对应的元素值

说明:按照顺序获取列表中的每个元素,赋值给变量名,再执行语句,如此循环往复,直到取完列表中所有的元素为止

>>> list1 = ['hello', 78, '你好', 'good']
>>> for item in list1:
... print(item)
...
hello
78
你好
good

6.2 使用while循环遍历列表[使用下标循环]

语法:

下标 = 0

while 下标 < 列表的长度:

​ 语句

​ 下标 += 1

>>> list1 = ['hello', 78, '你好', 'good']
>>> index = 0
>>> while index < len(list1):
... print(list1[index])
... index += 1
...
hello
78
你好
good

6.3 同时遍历下标与元素

语法:

for 下标,变量 in enumerate(列表)

​ 语句

>>> list1 = ['hello', 78, '你好', 'good']
>>> for index,item in enumerate(list1):
... print(index, item)
...
0 hello
1 78
2 你好
3 good

enumerate()[枚举]函数用于一个可遍历的数据对象(如列表,元组或者字符串)组合为一个索引序列,同时列出数据与数据下标,一般使用在for循环中
enumerate(obj, [start =0])
obj:一个可迭代对象
start:下标起始位置

#####7、List转dict

list1=[('a',1),('b',2),('c',3)]
dict1={k:v for k,v in list1}
dict2={v:k for k,v in list1}
print(dict1)
print(dict2)
输出:
{'a': 1, 'b': 2, 'c': 3}
{1: 'a', 2: 'b', 3: 'c'}

#####8、切片

######8.1 一个冒号

    list1=['a','b','c','d','e']
print('获取全部:',list1[:])
print('去头去尾:',list1[1:-1])
print('取[2,4)',list1[2:4])
输出:
获取全部: ['a', 'b', 'c', 'd', 'e']
去头去尾: ['b', 'c', 'd']
取[2,4) ['c', 'd']

冒号后面没有值则默认为list1的长度。

######8.2两个冒号

冒号后面是步长,切片的步长默认为1,不可为0。

    list1=['a','b','c','d','e']
print('获取全部:',list1[::])
print('列表倒置:',list1[::-1])
print('从下标0开始,步长为2',list1[::2])
print('从下标1开始,步长为2',list1[1::2])
输出:
获取全部: ['a', 'b', 'c', 'd', 'e']
列表倒置: ['e', 'd', 'c', 'b', 'a']
从下标0开始,步长为2 ['a', 'c', 'e']
从下标1开始,步长为2 ['b', 'd']

常用的是list1[::-1],列表倒置。

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

关注我,我们一起成长~~

python数据类型之List(列表)的更多相关文章

  1. Python数据类型详解——列表

    Python数据类型详解--列表 在"Python之基本数据类型概览"一节中,大概介绍了列表的基本用法,本节我们详细学一下列表. 如何定义列表:在[]内以英文里输入法的逗号,,按照 ...

  2. Python 数据类型之一:列表(list)

    本次内容主要是总结一下 Python 数据类型中的 list (列表),关于 list 我在 Python 学习第二章已经简单介绍过了,这次呢,我这边主要总结自己学到的跟大家分享一下,有什么不对或者更 ...

  3. Python数据类型-03.序列-列表和元组

    本文主要记录关于Python序列中列表和元组的定义特点和常用方法 1.序列(sequence) 1.1.序列的定义 序列是一组有顺序的元素的集合(其实是是对象的集合,后期会引入“对象”这个概念)序列包 ...

  4. python数据类型二(列表和元组)

    一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...

  5. python数据类型(数字\字符串\列表)

    一.基本数据类型——数字 1.布尔型 bool型只有两个值:True和False 之所以将bool值归类为数字,是因为我们也习惯用1表示True,0表示False. (1)布尔值是False的各种情况 ...

  6. python数据类型详解及列表字典集合推导式详解

    一.运算符 Python语言支持以下类型的运算符: 算术运算符 如: #!/usr/bin/env python # -*- coding:utf-8 -*- a = 5 b = 6 print(a ...

  7. Python第三天 序列 数据类型 数值 字符串 列表 元组 字典

    Python第三天 序列  数据类型  数值  字符串  列表  元组  字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...

  8. python基础之数据类型/字符串/元组/列表/字典

    Python 数据类型 数字类型: int整型,long 长整型(在python3.0里不区分整型和长整型).float浮点型:complex复数(python中存在小数字池:-5--257):布尔值 ...

  9. Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式

    Python第三天 序列  5种数据类型  数值  字符串  列表  元组  字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell ...

随机推荐

  1. linux监控工具audit

    audit是什么? audit是记录linux审计信息的内核模块. 他记录系统中的各种动作和事件,比如系统调用,文件修改,执行的程序,系统登入登出和记录所有系统中所有的事件.audit还可以将审计记录 ...

  2. Linux驱动知识点

    # i2c_add_driver和i2c_new_device匹配后调用i2c_probe # 启动开发板,在超级终端中输入命令"cat /proc/misc"也可以查看对应的杂项 ...

  3. 多线程之ReentrantLock篇(五)

    昨天有说过后面讲ReentrantLock,今天我们这篇幅就全局的讲解下,我们在Lock出来前,解决并发问题没得选只能用Synchronized. 一.ReentrantLock PK synchro ...

  4. 03 以Hello World为例,分析C语言的最小的程序结构

    C程序主要包含的部分 预处理器指令 函数 变量 语句 & 表达式 注释 C Hello World 实例 如下程序,可以在屏幕输出短句"Hello World" #incl ...

  5. 2020Java程序员架构师面试宝典,学习后面试必过,震惊,本人通过这篇教程,拿到了0个offer

    1. 引言 Java后端学习路线 <吐血整理>顶级程序员工具集 https://github.com/AobingJava/JavaFamily 跟上Java8 经历阿里.头条.腾讯等知名 ...

  6. C#实例(经典):四路光电开关&激光雷达数据采集和波形图绘制

    前言:本文全部纯手工打造,如有疏漏之处,还请谅解! 如果需要查看更多文章,请微信搜索公众号 csharp编程大全,需要进C#交流群群请加微信z438679770,备注进群, 我邀请你进群! ! ! 这 ...

  7. kubernetes-集群架构与组件

    1. kubernetes集群架构 2. kubernetes组件  1) master组件 kube-apiserver Kubernetes API,集群的统一入口,各组件协调者,以RESTful ...

  8. 手撸ORM浅谈ORM框架之基础篇

    好奇害死猫 一直觉得ORM框架好用.功能强大集众多优点于一身,当然ORM并非完美无缺,任何事物优缺点并存!我曾一度认为以为使用了ORM框架根本不需要关注Sql语句如何执行的,更不用关心优化的问题!!! ...

  9. 题解:POI2012 Salaries

    题解:POI2012 Salaries Description The Byteotian Software Corporation (BSC) has \(n\) employees. In BSC ...

  10. 汕尾6397.7539(薇)xiaojie:汕尾哪里有xiaomei

    汕尾哪里有小姐服务大保健[微信:6397.7539倩儿小妹[汕尾叫小姐服务√o服务微信:6397.7539倩儿小妹[汕尾叫小姐服务][十微信:6397.7539倩儿小妹][汕尾叫小姐包夜服务][十微信 ...