- 本节内容:
- 一.列表的定义+基本操作
- 通过下标获取指定的元素
_res = varlist[0]
print(res) - 向列表中追加元素
_varlist.append(25)
print(varlist) - 二.列表的切片操作
三.列表的相关函数
四.深拷贝与浅拷贝- 五.列表推导式
- 六.列表练习题
- 普通方法
varlist = [‘AAAA’,‘bbBb’,‘Cccc’]
newlist = []
for i in varlist:
newlist.append(i.lower())
print(newlist)
#列表推导式
_newlist = [i.lower() for i in varlist]
print(newlist)
我想当第一
本节内容:
一.列表的定义+基本操作
列表是一组有序的数据的组合,列表中的数据可以被修改
列表的定义:
1.可以使用中括号定义[]
2.可以使用list函数定义
3.在定义时,需要在每个元素之间使用逗号进行分割
4.列表中的元素可以是任意类型的,通常是存放相同元素的集合
列表的基本操作:
_#列表的拼接
_print(varlist+varlist1)
_#列表的重复
_print(varlist*3)
_#检测元素是否存在列表中
_res = 1 in varlist
print(res)
_#列表的索引操作(正着数从0开始,倒着数从-1开始)
通过下标获取指定的元素
_res = varlist[0]
print(res)
_#通过下标修改元素
_varlist[0] = 2
print(varlist)
_#注意:不能通过下标添加元素
向列表中追加元素
_varlist.append(25)
print(varlist)
#列表元素的删除del可以指定删除,pop()函数默认删除最后一个元素
del varlist[0]
print(varlist)
varlist.pop()
print(varlist)
二.列表的切片操作
语法==>列表[开始索引:结束索引:步进值]
1.列表[开始索引:] ==> 从开始索引到列表的最后
2.列表[:结束值] ==> 从开始到指定的结束索引之前
3.列表[开始索引:结束索引] ==>从开始索引到指定结束索引之前
4.列表[开始索引:结束索引:步进值] ==>从指定索引开始到结束索引之前结束,按照步进值取值切片
varlist = [‘刘德华’,‘黎明’,‘张学友’,‘郭富城’,‘唐僧’,‘孙悟空’,‘猪八戒’,‘沙和尚’]
print(varlist[2:]) #1
print(varlist[:2]) #2
print(varlist[0:3]) #3
print(varlist[2:7:2]) #4
_#倒着输出列表的元素
_print(varlist[::-1])
_#从指定下标开始,到指定下标前结束 ,并替换为对应的数据(容器类型数据会拆分为每个元素进行赋值)
#注意:需要与更新的元素的个数相对应
_varlist[0:5]=‘123’
print(varlist)
#切片的删除
del varlist[0:5]
print(varlist)
三.列表的相关函数
_#len() 检测当前列表的长度
_print(len(varlist))
_#count() 检测列表中指定元素出现的次数
_print(varlist.count(‘张学友’))
_#append() 向列表中添加新的元素
_varlist.append(‘龚声望’)
print(varlist)
_#insert() 可以向列表中指定的位置追加数据,原先在那个位置以及后面的全部后移一位
_varlist.insert(5,‘李连杰’)
print(varlist)
#pop() 可以对指定位置上的元素做出栈操作,返回出栈的元素
_print(varlist.pop()) #默认为最后一个元素出栈
print(varlist.pop(0)) #可以指定元素出栈_
_remove() 可以指定列表中的元素 进行删除,若有多个相同的,只删除第一个元素,若没找到指定元素则会报错
varlist.remove(‘唐僧’)
print(varlist)
index() 可以查找指定元素在列表中第一次出现的位置
print(varlist.index(‘唐僧’))
_#extend() 接收一个容器类型的数据,把容器中的数据追加到原列表的后面
_varlist.extend([1,2,3])
print(varlist)
_#clear() 清空列表
_varlist.clear()
print(varlist)
_#reverse 列表反转
_varlist.reverse()
print(varlist)
#sort() 对列表进行排序
_varlist1 = [5,-6,4,8,-2,3,1]
varlist1.sort() #默认排序为升序(reverse = False)
varlist1.sort(reverse=True) #使用reverse改为降序
varlist1.sort(key=abs) #可以传递一个函数,按照函数的处理结果排序,但展示出的排序结果会是原数据
_print(varlist1)
四.深拷贝与浅拷贝
可以通过id进行检测是否两个列表同时发生了变化,id相同说明两个列表的地址一样,那么进行修改另一个列表也会发生变化.
_#简单的拷贝,可以把列表复制一份,也可以对拷贝的一维列表进行修改,不会影响原来的列表
_varlist = [1,2,3]
newlist = varlist.copy()
_#如果操作一个被拷贝的多维列表,那么原多维列表也会发生改变,这就是浅拷贝
_varlist = [1,2,3,[4,5,6]]
newlist = varlist.copy()
del newlist[3][0]
print(varlist,id(varlist[3][0]))
print(newlist,id(newlist[3][0]))
#深拷贝,可使用copy模块中的deepcopy
import copy
varlist = [1,2,3,[4,5,6]]
newlist = copy.deepcopy(varlist)
del newlist[3][0]
print(varlist,id(varlist[3][0]))
print(newlist,id(newlist[3][0]))
五.列表推导式
1.普通的列表推导式
变量 = [变量或变量的处理结果 for 变量 in 容器类型数据]
示例一:假设我们想创建一个平方列表
_#使用普通方法完成
_varlist = []
for i in range(10):
res = i**2
varlist.append(res)
print(varlist)
_#列表推导式
_varlist = [i2 for i in **range(10)]
print(varlist)
示例二:’1234’==>[2,4,6,8]
_#常规方法
_varstr = ‘1234’
newlist = []
for i in varstr:
res = int(i)*2
newlist.append(res)
print(newlist)
#使用列表推导式
_varstr = ‘1234’
varlist = [int(i)2 for i *in varstr]
print(varlist)
2.带有判断条件的列表推导式
变量 = [变量或变量的处理结果 for 变量 in 容器类型数据 条件表达式]
示例:0-9 求所有的偶数==>[ ]
_
#普通方式
_newlist = []
for i in range(10):
if i %2 ==0:
newlist.append(i)
print(newlist)
_#列表推导式
_newlist = [i for i in range(10) if i %2 == 0]
print(newlist)
3.带有条件循环的多循环列表推导式
示例:[1,2,3],[3,1,4] ==>把两个列表中的元素两两组合成一个元组,要求组合的元素不能重复
_#普通方法
_varlist1 = [1,2,3]
varlist2 = [3,1,4]
newlist = []
for i in varlist1:
for j in varlist2:
if i != j:
newlist.append((i,j))
print(newlist)
_#使用列表推导式
_newlist = [(i,j) for i in [1,2,3] for j in [3,1,4] if i != j]
print(newlist)
六.列表练习题
1.把字典中的键值对转换成 a=b 的数据格式
将 字典 {‘user’:’admin’,’age’:21,’phone’:18856925030}
===>列表 [‘user=admin’,’age=21’,’phone=18856925030’]
===>字符串 user=gsw&age=21&phone=18856925030
vardict = {‘user’:‘gsw’,‘age’:21,‘phone’:18856925030}
#普通方式
_varlist = []
for i in vardict:
res = i + ‘=’ + str(vardict[i])
varlist.append(res)
print(varlist)
#列表推导式
varlist = [i + ‘=’ + str(vardict[i]) for i in vardict ]
print(varlist)
#将列表转换为字符串_
res = ‘&’.join(varlist)
print(res)
2.所有字符全部转为小写
_题: [‘AAAA’,’bbBb’,’Cccc’] ===> [‘aaaa’,’bbbb’,’cccc’]
普通方法
varlist = [‘AAAA’,‘bbBb’,‘Cccc’]
newlist = []
for i in varlist:
newlist.append(i.lower())
print(newlist)
#列表推导式
_newlist = [i.lower() for i in varlist]
print(newlist)
3.x是0-5之间的偶数,y是0-5之间的奇数,把x,y组成一个元组放到列表中
#普通方法
_newlist = []
for x in range(6):
for y in range(6):
if x%2 ==0 and y%2 != 0:
newlist.append((x,y))
print(newlist)
#列表推导式
_newlist = [(x,y) for x in range(6) for y in range(6) if x % 2 ==0 and y %2 != 0]
print(newlist)
4.九九乘法表
#普通方法
_newlist = []
for i in range(10):
for j in range(1,i+1):
res = f’{i}x{j}={ij*}’
newlist.append(res)
print(newlist)
#列表推导式
_newlist = [f’{i}x{j}={ij}’ for i in range(10) for j *in range(1,i+1)]
print(newlist)