Python自学记录:2列表的常见操作

列表:list是处理一组有序项目的数据结构,列表中的项目应该包括在方括号中,我们可以在列表里面存储各种数据类型不同的项目,每个项目之间用逗号隔开。列表是可变的数据类型,我们可以对它进行添加、删除、修改、查看等操作。

我们先定义一个列表,里面有字符串,数字,布尔值,列表这几种数据类型,然后对它进行输出

my_list=['DaYang','666',True,False,{2,3,4}]
print(my_list)

效果

列表的常见操作
1.列表元素的查看

可以根据索引获取列表中每一个元素,索引是从零开始的。如果列标太长想直接获取最后一个元素,还可以用-1做索引,以次类推倒数第二个,倒数第三个

marvel=['钢铁侠','雷神','美国队长','绿巨人']
value1=marvel[1]    #获取第二个元素
value2=marvel[2]    #获取第三个元素
value3=marvel[-1]   #获取最后一个元素
print(value1,value2,value3)

在这里插入图片描述

2.获取列表的长度
marvel=['钢铁侠','雷神','美国队长','绿巨人']
list_len=len(marvel)
print(list_len)

#当然我们还可根据len(marvel)-1直接获取最后一个元素
value=len(marvel)-1
print(marvel[value])

在这里插入图片描述

3.列表元素的添加
marvel=['钢铁侠','雷神','美国队长','绿巨人']

#通过append()方法进行添加
marvel.append('黑寡妇')    #默认添加到最后
print(marvel)

#通过insert()方法指定添加
marvel.insert(0,'蜘蛛侠')    #列表的第一个元素索引是从零开始的,然后以此类推
marvel.insert(3,'鹰眼')
print(marvel)

我们可以看到,黑寡妇被添加到最后一个位置,蜘蛛侠被添加到第一个位置,鹰眼被添加第四个位置
在这里插入图片描述

4.列表元素的删除
film_type=['科幻','爱情','恐怖','喜剧','动作','青春','悬疑','魔幻']

#(1)pop()方法
film_type.pop()     #这里默认删除的是最后一个元素
print(film_type)

film_type.pop(1)    #这里根据索引删除指定元素
print(film_type)

#(2)del方法
del film_type[5]    #这里根据索引删除指定元素
print(film_type)

#(3)remove()方法
film_type.remove('恐怖')   #这里根据列表里的名字进行删除
print(film_type)

在这里插入图片描述
注意:用remove方法来进行删除,如果要删除的元素的名字列表里不存在,那么它会报错

film_type.remove('枪战')
print(film_type)

在这里插入图片描述

5.列表元素的修改
marvel=['钢铁侠','雷神','美国队长','绿巨人']
marvel[1]='金刚狼'
marvel[3]='死侍'        #根据下标直接赋值修改
print(marvel)

在这里插入图片描述

6.查找列表指定元素的索引值
marvel=['钢铁侠','雷神','美国队长','绿巨人']
number1=marvel.index('美国队长')
number2=marvel.index('绿巨人')
print('美国队长的索引值:%d\n绿巨人的索引值:%d'%(number1,number2))

在这里插入图片描述

7.列表里重复元素的个数
marvel=['钢铁侠','雷神','美国队长','绿巨人','钢铁侠','钢铁侠','雷神']
value1=marvel.count('钢铁侠')
value2=marvel.count('雷神')
print('钢铁侠出现的次数:%d\n雷神出现的次数:%d'%(value1,value2))

在这里插入图片描述

8.把一个列表里的元素添加到另一个列表里
superhero=['钢铁侠','雷神','美国队长','绿巨人']
dc_hero=['超人','蝙蝠侠','神奇女侠','海王']

#把dc_hero的元素添加到superhero,当然dc_hero里的元素依然存在
superhero.extend(dc_hero)
print(superhero,dc_hero)

在这里插入图片描述

9.使列表里元素的顺序颠倒过来
marvel=['钢铁侠','雷神','美国队长','绿巨人']
marvel.reverse()
print(marvel)

在这里插入图片描述

10.列表元素的排序
number=[4,6,5,2,9,3,1,7,10,8]
number.sort()
print(number)

#字母以字母顺序表排序
name=['BaiGe','LiHua','DaBai','LaoWang','Adam','HuangZai','ChenXing','ZhongYang']
name.sort()
print(name)

#向下面这样混合的,有特殊字符开头的优先级最高排在最前面,然后是数字开头的,小写字母开头的优先级最低,排在最后
blend=['BaiGe','*Li','LiHua','DaBai','Adam','4Zhao','alan']
blend.sort()
print(blend)

在这里插入图片描述

11.清除列表里的所有元素
marvel=['钢铁侠','雷神','美国队长','绿巨人']
marvel.clear()
print(marvel)

在这里插入图片描述

12.列表的copy操作
marvel=['钢铁侠','雷神','美国队长','绿巨人']
marvel2=marvel.copy()      #我们对marvel进行copy
print(marvel)
print(marvel2)

marvel[1]='鹰眼'        #我们把marvel的第二个元素改动一下
print(marvel)
print(marvel2)

我们会发现marvel2完全地copy了一份marvel,而且marvel里的元素修改的话,并不影响marvel2里的元素
在这里插入图片描述
如果我们在marvel里面在添加一个列表,并且还修改字列表里的元素,这会有什么情况发生呢?

marvel=['钢铁侠','雷神','美国队长','绿巨人',['dayang','ZhangJie']]
marvel2=marvel.copy()

marvel[1]='鹰眼'
marvel[4][0]='DaYang'

print('marvel:',marvel)
print('marvel2:',marvel2)

我们会发现marvel2列表里第一层的元素依然没有随着marvel里第一层元素的修改而发生变化。但是修改里marvel字列表里的元素,marvel2里的字列表里的元素也跟着发生了变化。这就是浅copy,意思就是marvel2 copy 的marvel第一层的元素不会改变,若果marvel第二层的元素改变的话,marvel2第二层的元素也会随着改变。
在这里插入图片描述
但是这显然不是我们想要的结果,我们要的是copy的完完整整的marvel,marvel2不会随着marvel里的元素的改变而改变。有浅copy当然也就有深copy,所以有个办法可以解决这个问题,就是导入copy这个模块,使用它里面的deepcopy()方法

import copy
marvel=['钢铁侠','雷神','美国队长','绿巨人',['dayang','ZhangJie']]
marvel2=copy.deepcopy(marvel)    #深capy

marvel[1]='鹰眼'
marvel[4][0]='DaYang'

print('marvel:',marvel)
print('marvel2:',marvel2)

结果我们发现,marvel2完整的copy了一份marvel1,并没有随着marvel1里面的元素的改变而改变
在这里插入图片描述

13.列表的切片操作
film_type=['科幻','爱情','恐怖','喜剧','动作','青春','悬疑','魔幻']

#获取全部元素
print(film_type[0:])
print(film_type[:])

#获取前5五个元素
print(film_type[0:5])
print(film_type[:5])

#获取倒数三个元素
print(film_type[5:])
print(film_type[-3:])

#从第二个元素开始,每隔两个取一个元素
print(film_type[1::2])          #步长切片[起始:末尾:步长]
print(film_type[::2])

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值