Python(IT峰)笔记06-数据类型详解:列表,列表的定义,列表的基本运算,列表中的切片,列表中的相关函数,浅拷贝,深拷贝,列表推导式

1、列表的定义

中括号进行定义
list函数定义
使用逗号分割
列表中的元素可以是任意类型,尽管这样很少用

lists=list()
lists.append('zhangsan')
lists.append('lisi')
lists.append(34)
print(lists)#['zhangsan', 'lisi', 34]
2、列表的基本运算(操作)

+运算:列表相加,组合成新的列表

list1=['zhangsan','lisi','wanger']
list2=[2.3,4,6]
res=list1+list2
print(res)#['zhangsan', 'lisi', 'wanger', 2.3, 4, 6]

*重复运算:列表元素重复

list1=['zhangsan','lisi','wanger']
res=list1*3
print(res)#['zhangsan', 'lisi', 'wanger', 'zhangsan', 'lisi', 'wanger', 'zhangsan', 'lisi', 'wanger']
  • in:元素是否存在与列表
list1=['zhangsan','lisi','wanger']
res='lisi' in list1
print(res)#True
  • 通过索引获取、及修改元素,不能通过下标添加元素(js可以)
  • 追加元素使用append(单个元素)
list1=['zhangsan','lisi','wanger']
res=list1[-1]
print(res)#True
list1[0]='maba'
print(list1[0])#maba
list1.append('zhaoliu')
print(list1)
  • len获得列表长度
  • 列表元素的删除pop(),实际就是出栈的意思,返回数组
list1=['zhangsan','lisi','wanger']
res=list1[-1]
print(res)#True
list1[0]='maba'
print(list1[0])#maba
list1.append('zhaoliu')
print(list1)#['maba', 'lisi', 'wanger', 'zhaoliu']
list1.pop()
print(list1)#['maba', 'lisi', 'wanger']
3、列表中的切片
  • 下标切片法
    列表名[开始索引:结束索引:步进值]
list1=['zhangsan','lisi','wanger','zhaoliu','maba']
res=list1[2:]#从第三个到最后一个
print(res)#['wanger', 'zhaoliu', 'maba']
res=list1[:2]#从开始到第三个
print(res)#['zhangsan', 'lisi']

res=list1[1:4]#从第2开始到第5个
print(res)#['lisi', 'wanger', 'zhaoliu']

  • 列表反转:列表名[::-1]
    需要就是从倒数第几个开始输出
list1=['zhangsan','lisi','wanger','zhaoliu','maba']
res=list1[::-1]
print(res)#['maba', 'zhaoliu', 'wanger', 'lisi', 'zhangsan']

  • 下标切片法对列表数据进行更新
    直接对切片赋值就行
list1=['zhangsan','lisi','wanger','zhaoliu','maba']
list1[2:4]='sunjiu'#如果是字符串会拆分装进去
print(list1)#['zhangsan', 'lisi', 's', 'u', 'n', 'j', 'i', 'u', 'maba']

  • 切片删除法

del list[n1:n2]

list1=['zhangsan','lisi','wanger','zhaoliu','maba']
del list1[1:3]#删除的范围
print(list1)#['zhangsan', 'zhaoliu', 'maba']
4、列表中的相关函数
  • len():检测列表长度
  • count(指定元素值):检测列表中指定元素出现的次数
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
res=list.count('maba')
print(res)#2
  • append(指定元素):添加元素到列表尾部,更改原列表
  • insert(index,内容):从索引位置向列表插入内容
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list.insert(2,'mahonggui')
print(list)#['zhangsan', 'lisi', 'mahonggui', 'wanger', 'zhaoliu', 'maba', 'maba']
  • pop(索引下标)删除指定索引的元素,出栈
  • remove(指定元素内容)删除指定元素
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list.remove('wanger')
print(list)#['zhangsan', 'lisi', 'zhaoliu', 'maba', 'maba']

  • index(指定内容):查找指定内容在列表中的位置
  • extend(另一个列表):向另一个列表添加多个元素
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list.extend(['caoxueqin','luyou'])
print(list)#['zhangsan', 'lisi', 'wanger', 'zhaoliu', 'maba', 'maba', 'caoxueqin', 'luyou']
  • clear():清空所有元素
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list.clear()
print(list)#[]

  • reverse()反转元素
  • sort()列表排序操作
  • 或sort(reverse-True)降序排列
  • 或sort(key=自定义函数)使用自定义函数排序规则排序
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list.sort()
print(list)#['lisi', 'maba', 'maba', 'wanger', 'zhangsan', 'zhaoliu']

  • copy()复制当前列表,拷贝一维数组时是深拷贝,二维列表时是浅拷贝,值复制,不指向同一个对象
    copy()对一维列表最匹配,当是二维列表的时候,二维列表部分是引用,不是值拷贝
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list2=list.copy()
del list[2]
print(list)#['zhangsan', 'lisi', 'zhaoliu', 'maba', 'maba']
print(list2)#['zhangsan', 'lisi', 'wanger', 'zhaoliu', 'maba', 'maba']

5、浅拷贝,深拷贝

copy()是深拷贝(拷贝值,但如果涉及二维列表,则是浅拷贝,如果要进行深拷贝,则要使用copy模块的deepcopy()函数

list=['zhangsan','lisi','wanger',['zhaoliu','maba','wangjiu']]
import copy
newlist=copy.deepcopy(list)#copy模块
del list[3][1]
print(list)#['zhangsan', 'lisi', 'wanger', ['zhaoliu', 'wangjiu']]
print(newlist)#['zhangsan', 'lisi', 'wanger', ['zhaoliu', 'maba', 'wangjiu']]
6、列表推导式(list-comprehension)

使用一个运算对某个序列或可迭代对象的每个元素,来创建列表,或者通过满足某些特定条件来创建子序列。
实际就是用表达式对数据进行过滤或处理,并将结果组成一个新的列表

传统方法

varlist=[]
for item in range(1,5):
	varlist.append(item**2)
print(varlist)#[1, 4, 9, 16]

使用map函数和lambda完成

varlist=map(lambda x:x**2,range(1,5))
print(list(varlist))#[1, 4, 9, 16]

使用列表推导式完成
变量=[ 变量表达式运算 for 变量 in 容器(迭代器)]

varlist=[item**2 for item in range(1,5)]#先循环出迭代器的每个元素,然后再进行处理,再赋值给列表
print(list(varlist))#[1, 4, 9, 16]

7、带有判断条件的列表推导式

变量=[ 变量表达式运算 for 变量 in 容器(迭代器 ) 条件表达式]

varlist=[item**2 for item in range(1,7) if item %2==0]#从范围内取偶数乘方
print(list(varlist))#[4, 16, 36]

8、带有判断条件的多循环列表推导式

传统方法

varlist=[]
for x in range(3):
	for y in range(1,4):
		if(x!=y):
			varlist.append((x,y))

print(varlist)#[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 1), (2, 3)]

列表推导式方法

newlist=[(x,y) for x in range(3) for y in range(1,4) if x!=y]
print(newlist)#[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 1), (2, 3)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值