Python列表list的详细用法介绍
作者:爪哇斗罗 发布时间:2021-04-17 06:56:15
一. 创建列表
列表(list)作为Python中基本的数据结构,是存储数据的容器,相当于其它语言中所说的数组。
模拟出的结构如下:
创建列表有两种方式:
1.1 第一种
使用“[ ]”进行创建,内部元素可以是任意数据类型:
list1=["Hello","world",True,0.01,12]
1.2 第二种
使用Python中内置函数list()
list2=list(["Hello","world",True,0.01,12])
列表的特点总结:
列表元素是按照有序顺序进行排序的每个索引对应一个数据列表数据可以重复存储内部元素可以是任意数据类型根据内部元素多少动态分配内存空间
二. 查询列表
2.1 获取列表元素索引
使用index()函数获取元素索引,若列表中有重复元素,只获取第一个位置的索引,元素不存在会抛出错误。
list1 = ["Hello","Hello",True,0.01,12]
# 索引为 0
print(list1.index("Hello"))
# 索引为 4
print(list1.index(12))
# 索引不存在 ValueError: 100 is not in list
print(list1.index(100))
给index()函数设置参数,可以在指定的范围内查找元素的索引位置
list1 = ["Hello", "Hello", True, 0.01, 12]
# 从索引1开始到索引4结束,不包括索引4,查找元素True的索引为2
print(list1.index(True, 1, 4))
2.2 获取列表单个元素
对于一个列表,索引从前往后下标是从0~N-1,从后往前是-N~-1,N表示元素个数。
list1 = ["Hello", "Hello", True, 0.01, 12]
# 获取索引为2的元素 True
print(list1[2])
# 获取索引为-1的元素 12
print(list1[-1])
# IndexError: list index out of range
print(list1[5])
2.3 获取列表多个元素
使用索引只能获取一个元素,想要获取列表中多个元素使用切片。
公式:列表名[start : stop :step],意思是从哪里开始到哪里结束,可以定义步长(默认步长为1,step不能为0)。
对于切片的结果就是对原列表的拷贝生成一个新的列表对象。
切片的用法如下:
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]
# 取索引1~6,默认步长为1:['Hello', True, 0.01, 12, 32]
print(list1[1:6:])
# 取索引1~6,['Hello', True, 0.01, 12, 32]
print(list1[1:6:1])
# 取索引1~6,步长为2:['Hello', 0.01, 32]
print(list1[1:6:2])
# start不写,默认从0开始:['Hello', True, 12]
print(list1[:6:2])
# ['Hello', True, 12]
print(list1[0:6:2])
# stop不写,
print(list1[0::2])
# step为负数 -1 [34, 32, 12, 0.01, True, 'Hello', 'Hello']
print(list1[::-1])
# [34, 12, True, 'Hello']
print(list1[::-2])
# [32, 12, 0.01, True, 'Hello', 'Hello']
print(list1[5::-1])
# [32, 12, 0.01, True]
print(list1[5:1:-1])
注意:若step为负数则是从后往前开始截取切片。
2.3 判断元素是否存在于列表
使用in或者not in,输出的是布尔类型的值。
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]
# True
print("Hello" in list1)
# False
print("Hello" not in list1)
# False
print(True not in list1)
# True
print(12 in list1)
遍历列表元素:
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]
for i in list1:
print(i)
三. 列表添加操作
list1=[10,20,30,40,50,60]
# 在列表末尾添加一个元素
list1.append(34)
# [10, 20, 30, 40, 50, 60, 34]
print(list1)
# 在列表末尾添加多个元素
list1.extend([21,12,34])
# [10, 20, 30, 40, 50, 60, 34, 21, 12, 34]
print(list1)
# 在列表任意位置添加一个元素
list1.insert(0,1)
# [1, 10, 20, 30, 40, 50, 60, 34, 21, 12, 34]
print(list1)
# 在列表任意位置添加多个元素,会删除切片的元素,然后添加新元素
list2=["hello",3,40]
list1[5:8:]=list2
# [1, 10, 20, 30, 40, 'hello', 3, 40, 21, 12, 34]
print(list1)
四. 列表删除操作
list1 = [10, 20, 30, 40, 50, 60, 70]
list1.remove(20)
# [10, 30, 40, 50, 60, 70]
print(list1)
# 删除索引为1的元素,不指定删除最后一个元素
list1.pop(1)
# [10, 40, 50, 60, 70]
print(list1)
# 切片删除
list1[1:3] = []
# [10, 60, 70]
print(list1)
五. 修改列表元素
为指定的索引修改元素值,也可以使用切片的方式修改。
list1 = [10, 20, 30, 40, 50, 60, 70]
list1[3]="Hello"
# [10, 20, 30, 'Hello', 50, 60, 70]
print(list1)
# 切片方式
list1[3:6]=[1,1,1,1]
# [10, 20, 30, 1, 1, 1, 1, 70]
print(list1)
六. 列表排序操作
有常见的两种方式可以对列表中的元素进行排序,使用sort(),或者sorted()的方式进行排序。
两者区别就是前者排序后不会生成新的列表对象,而后者会生成一个新的列表对象。
list1 = [10, 30, 20, 40, 80, 60]
# 原来list1: 1738929360704
print("原来list1:", id(list1))
# [10, 20, 30, 40, 60, 80] 默认升序
list1.sort()
print(list1)
# 后来list1: 1738929360704
print("后来list1:", id(list1))
# 指定reverse=True为降序
list1.sort(reverse=True)
# [80, 60, 40, 30, 20, 10]
print(list1)
###################################
list2 = [10, 30, 67, 100, 80, 32]
# 原来list2: 2357934175872
print("原来list2: ", id(list2))
list2 = sorted(list2)
# # [10, 30, 32, 67, 80, 100]
print(list2)
# 后来list2: 2357931224384
print("后来list2: ", id(list2))
# 降序
list2 = sorted(list2, reverse=True)
# [100, 80, 67, 32, 30, 10]
print(list2)
此外,还可以使用循环生成列表,称为列表生成式。
主要结构:
[ i*i for i in range(a,b) ]
通过一个for循环生成列表,i*i指的是计算公式。
代码操作:
# 生成1-9的列表式子,并通过i+i计算
list1 = [i + i for i in range(1, 10)]
# [2, 4, 6, 8, 10, 12, 14, 16, 18]
print(list1)
来源:https://blog.csdn.net/qq_41857955/article/details/125700273
猜你喜欢
- 一、目录权限设置很重要:可以有效防范黑客上传木马文件. 如果通过 chmod 644 * -R 的话,php文件就没有权限访问了。 如果通过
- python之所以被广泛使用,倒不见得是本身语法简单,而是而nodejs/javascript一样把三方库的依赖管理简化了,而不用和java
- 一、使用css缩写使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。css缩写的主要规则请参看《常用css缩写语法总结》,这里就不展开描
- 阅读上一章:Chapter 7 锚点 Chapter 8 再谈清单先前在第一章,我们讨论过几种标记清单的做法,研究以<ul>和&
- 写完这个项目后,导师说这个你完全可以当作毕业项目使用了,写的很全,很多的都设计考虑周全,但我的脚步绝不止于现在,我想要的是星辰大海!与君共勉
- 有时候我们会在页面上显示用户的所在地区,这个原理是:先得到用户的IP,然后去查询将IP转换成一个数值,最后去查这个数值所在的范围,来得到用户
- 本文实例讲述了Python Web框架之Django框架Model基础。分享给大家供大家参考,具体如下:model是关于你的数据的单一的,确
- 很久没写过东西了,今天看了chinahuman 的《用asp自动解析网页中的图片地址,并将其保存到本地服务器》,于是优化了这个程序,并且将所
- json和dictpython中的dict类型要转换为json格式的数据需要用到json库:import json <json>
- 由于特定需求,最近实验室需要远程连接外地的sql server 2000服务器,最开始怎么连也连不上,出现了很多问题,但是在今天上午,借用实
- 内容摘要:我们在浏览一些文章的时候,当鼠标选中一些文字的时候,就出现了一些隐藏的字符,平常是看不到的。这些干扰码一般有两种,一是随机无意义的
- <div class=”A” style=”position:relative;”>A 
- nofollow标签是Google2005年推出的,目的是尽量减少垃圾链接对搜索引擎的影响。有用过网页制作工具的人都知道,在这些工具里是找不
- 如何用我的国际域名做虚拟域名?config.asp<%Domain_URL = "intels.net&
- python简单实现最大似然估计1、scipy库的安装wim+R输入cmd,然后cd到python的pip路径,即安装:pip instal
- 1. Numpy(Numberical Python)Anaconda中已经集成了NumPy,可以直接使用。如果想要自行安装的话,可以使用流
- 本文介绍以下内容:1. 使用transformers框架做预训练的bert-base模型;2. 开发平台使用Google的Colab平台,白
- Q: 不知xml和html有什么区别?它们不同在哪? A: 关于XML和HTML区别请参考: http://www.w3c.org/Mark
- pillowPillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。pillow可以说已经取代了PIL,将其
- 如图:其中Num是自增长列,Operation是分类标签,count是汇总数据 代码如下:select Num=row_numb