点击上方蓝字关注我们,一起涨姿势!

正文共:3870字 预计阅读时间:10分钟
列表 是 Python 中最常用的数据类型,它是一种可变序列。一个列表可以包含不同类型的元素,但通常在使用时使用相同类型


创建一个列表非常简单,只要把逗号分隔的数据项使用方括号括起来即可
常见的方式有:
仅使用方括号,可以创建空列表
>>> a = [] # 空列表>>> type(a)<class 'list'> # list表示a的类别是列表
使用方括号,其中各项以逗号分隔
>>> b = ['孙悟空'] # 单个值>>> type(b)<class 'list'>>>> c = ['郭靖','黄蓉','洪七公','黄药师','周伯通'] # 多个值>>> type(c)<class 'list'>
使用 list() 将其他类型转换为列表
>>> d = '小桃无主自开花,烟草茫茫带晚鸦。几处败垣围故井,向来一一是人家。'>>> list(d) # 将字符串转换为列表['小', '桃', '无', '主', '自', '开', '花', ',', '烟', '草', '茫', '茫', '带', '晚', '鸦', '。', '几', '处', '败', '垣', '围', '故', '井', ',', '向', '来', '一', '一', '是', '人', '家', '。']


由于列表也是一种序列,所以和字符串一样,可以通过索引或切片访问列表中的值
取单个值
>>> s = ['郭靖','黄蓉','洪七公','黄药师','周伯通']>>> s[2] # 获取下标为2的值'洪七公'>>> s[-2] # 获取下标为-2的值'黄药师'>>> s[100] # 超过列表范围会报错Traceback (most recent call last):File "<pyshell#3>", line 1, in <module>s[100]IndexError: list index out of range
切片(取一组值)
>>> s = ['郭靖','黄蓉','洪七公','黄药师','周伯通']>>> s[1:3] # 获取下标1到3(不含)的值['黄蓉', '洪七公']>>> s[1:] # 获取下标1到末尾的值['黄蓉', '洪七公', '黄药师', '周伯通']>>> s[-3:] # 获取倒数3个值['洪七公', '黄药师', '周伯通']>>> s[:3] # 获取从头开始到下标为3(不含)的值['郭靖', '黄蓉', '洪七公']>>> s[:-1] # 获取从头开始到下标为-1(不含)的值['郭靖', '黄蓉', '洪七公', '黄药师']>>> s[-1:-4:-1] # 获取从下标为-1到-4(不含)的值,反向输出['周伯通', '黄药师', '洪七公']>>> s[-4:-1] # 获取从下标为-4到-1(不含)的值,正向输出['黄蓉', '洪七公', '黄药师']


修改列表元素很简单,只要指定列表和要修改的元素的索引即可
>>> s = ['郭靖','黄蓉','洪七公','黄药师','周伯通']>>> s[-1] = "老顽童">>> print(s)['郭靖', '黄蓉', '洪七公', '黄药师', '老顽童']
Python提供了多种向现有列表添加新数据的方式
添加单个数据
>>> s = ['郭靖','黄蓉','洪七公','黄药师','周伯通']>>> s.append('铁木真') # 使用append()在列表末尾添加值>>> print(s)['郭靖', '黄蓉', '洪七公', '黄药师', '周伯通', '铁木真']
添加多个数据
>>> s = ['郭靖','黄蓉','洪七公','黄药师','周伯通']>>> n = ['柯镇恶','朱聪','韩宝驹','南希仁','张阿生','全金发','韩小莹']>>> s.extend(n) # 使用extend()在添加其他列表>>> print(s)['郭靖', '黄蓉', '洪七公', '黄药师', '周伯通', '柯镇恶', '朱聪', '韩宝驹', '南希仁', '张阿生', '全金发', '韩小莹']
指定位置插入数据
>>> s = ['郭靖','黄蓉','洪七公','黄药师','周伯通']>>> s.insert(0,'梅超风') # 在下标为0的位置插入值>>> s['梅超风', '郭靖', '黄蓉', '洪七公', '黄药师', '周伯通']
Python也提供了多种删除元素的方式
使用del删除指定位置的元素
>>> s = ['梅超风', '郭靖', '黄蓉', '洪七公', '黄药师', '周伯通']>>> del s[0]>>> print(s)['郭靖', '黄蓉', '洪七公', '黄药师', '周伯通']
使用pop()删除并获取值
>>> s = ['梅超风', '郭靖', '黄蓉', '洪七公', '黄药师', '周伯通']>>> print(s.pop()) # 默认删除最后的值并获取该值周伯通>>> print(s)['梅超风', '郭靖', '黄蓉', '洪七公', '黄药师'] # 最后的值被删除>>> print(s.pop(0)) # 指定删除下标为0的值梅超风>>> print(s)['郭靖', '黄蓉', '洪七公', '黄药师'] # 在上一步的基础上删下标为0的值
根据值进行删除
>>> s = ['梅超风', '郭靖', '黄蓉', '洪七公', '黄药师', '周伯通']>>> s.remove('梅超风')>>> print(s)['郭靖', '黄蓉', '洪七公', '黄药师', '周伯通']


永久性排序(会改变原有列表)
>>> cars = ['bmw','audi','toyota','subaru','mazda']>>> cars.sort()>>> cars['audi', 'bmw', 'mazda', 'subaru', 'toyota']
临时排序
>>> cars = ['bmw','audi','toyota','subaru','mazda']>>> sorted(cars)['audi', 'bmw', 'mazda', 'subaru', 'toyota']>>> cars # 原列表未变['bmw', 'audi', 'toyota', 'subaru', 'mazda']
反转列表
>>> s = ['梅超风', '郭靖', '黄蓉', '洪七公', '黄药师', '周伯通']>>> s.reverse()>>> print(s)['周伯通', '黄药师', '洪七公', '黄蓉', '郭靖', '梅超风']
复制列表
>>> s = ['梅超风', '郭靖', '黄蓉', '洪七公', '黄药师', '周伯通']>>> n = s[:] # 复制列表并赋值给变量n>>> print(n) # n的值与s相同['梅超风', '郭靖', '黄蓉', '洪七公', '黄药师', '周伯通']


使用 for循环 可以依次获取序列中的值,for循环的代码结构如下:

举例:
n = ['柯镇恶','朱聪','韩宝驹','南希仁','张阿生','全金发','韩小莹']for i in n: # i为变量名,列表中的值依次赋值给iprint(f'我是江南七侠中的{i}') # 缩进的代码块会依次执行print('介绍完毕!') # 未缩进的代码会在for循环执行结束执行
输出结果为:



使用range()函数可以创建一系列的数字
for i in range(1,10):print (i)
输出为:

可以看出range(),从指定的数字开始,到指定的数字结束(不包括结束的数字),此外range()还有一个参数步长

我们可以使用list(range())创建数字列表
>>> a = list(range(1,10))>>> print(a)[1, 2, 3, 4, 5, 6, 7, 8, 9]


元组 和列表非常相似,但它是一种不可变序列,就像字符串一样。元组使用圆括号标识
创建元组
空括号表示空元组
>>> a = () # 空元组>>> type(a)<class 'tuple'>
使用带逗号的值表示单个元素的元组,如下a,b是元组,而c,d是字符串
>>> a = '张无忌',>>> type(a)<class 'tuple'>>>> b = ('张无忌',)>>> type(b)<class 'tuple'>>>> c = '张无忌'>>> type(c)<class 'str'>>>> d = ('张无忌')>>> type(d)<class 'str'>
用逗号分隔的多元素元组
>>> n = ('柯镇恶','朱聪','韩宝驹','南希仁','张阿生','全金发','韩小莹')>>> type(n) # 看起来和列表很相似,但是通过type检查可以看到它的类型为tuple<class 'tuple'>
使用tuple()转换可变类型生成元组
>>> n = ['柯镇恶','朱聪','韩宝驹','南希仁','张阿生','全金发','韩小莹']>>> type(n) # n为列表类型<class 'list'>>>> n1 = tuple(n) # 使用tuple转换列表为元组>>> type(n1)<class 'tuple'>
元组与字符串类似,下标索引从0开始,可以进行截取,组合,示例如下:
>>> n = ('柯镇恶','朱聪','韩宝驹','南希仁','张阿生','全金发','韩小莹')>>> n[0]'柯镇恶'>>> n[1:3]('朱聪', '韩宝驹')>>> n[-5:-2]('韩宝驹', '南希仁', '张阿生')>>> n[-1:-3:-1]('韩小莹', '全金发')
- End -

扫码二维码
获取更多精彩
木一学习室




如果喜欢,欢迎分享-点赞-点在看
文章转载自跟着小白学Python,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




