Python基础之列表

介绍

Python的列表是一个有序可重复的元素集合,其元素的数据类型可以不同,可以修改
按照元素的特征,列表可分为普通列表(数据类型相同)、混合列表(数据类型不同)、空列表(没有元素)。

一、基础语法

1、访问列表中的元素

列表从0开始为它的每一个元素顺序创建下标索引,直到总长度减一 。
注意要确保索引不越界,一旦访问的 索引超过范围,会抛出异常。

lis=['a','b','c']
print(lis[0]) # a
print(lis[3]) # IndexError: list index out of range

2、修改元素的值

li=[1,2,3]

li[1]=4
print(li)     # [1, 4, 3]

li[1:]=5,6
print(li)     # [1, 5, 6]

3、删除元素

3.1 del语句

根据索引删除

li=['a','b','c']
del li[0]
print(li)   # ['b', 'c']

3.2 remove()方法

直接根据值删除

li=['a','b','c']
li.remove('a')
print(li)       #['b', 'c']
li1=['a','b','c']
print(li1.remove('a'))   # None

3.3 pop()方法

根据索引号移除列表中的一个元素 (默认最后一个元素) ,并且返回该元素的值

li=['a','b','c']

li.pop()
print(li)     # ['a', 'b']

li.pop(1)
print(li)     # ['a']

4、列表常用函数

len() 返回列表元素个数
max() 返回列表元素最大值
min() 返回列表元素最小值

5、列表特殊操作

5.1 列表的组合

li1=[1,2,3]
li2=[4,5,6]
print(li1+li2)            # [1, 2, 3, 4, 5, 6]
print(li1.__add__(li2))   # [1, 2, 3, 4, 5, 6]

5.2 列表的乘法

li=['hi']
print(li*3)              # ['hi', 'hi', 'hi']
print(li.__mul__(3))     # ['hi', 'hi', 'hi']

5.3 判断元素是否在列表中

li1=[1,2,3]
print(3 in li1)             # True
print(li1.__contains__(3))  # True

6、切片

以冒号分割索引,start代表起点索引,end代表结束点索引,step为步长默认为1。省略start表示以0开始,省略end表示到列表的结尾。
与字符串切片类似,左闭右开原则。

7、排序和反转

默认升序 sort(key=None,reverse=False)
降序 sort(reverse=True)

li=[1,2,3,4,1]
li.sort()   # [1, 1, 2, 3, 4]
print(li)
li.sort(reverse=True)  # [4, 3, 2, 1, 1]
print(li)

反转 reverse()

li=[1,2,3,4,1]
li.reverse()   # [1, 4, 3, 2, 1]
print(li)

8、多维列表(嵌套列表)

li=[[1,2,3],[4,5,6]]
print(li[0][2])    # 3

9、列表的遍历

a=[1,2,3,4,5]
for i in a:       # 遍历每一个元素本身
    print(i)
    
for i in range(len(a)):  # 遍历列表的下标,通过下标取值
    print(i,a[i])

10、列表的内置方法

10.1 count()

统计某个元素在列表中出现的次数

li=[1,2,3,4,1]
print(li.count(1))   # 2

10.2 append()

在列表末尾添加新的对象

li1=[1,2,3]
li2=[4]
li1.append(li2)
print(li1)         # [1, 2, 3, [4]]

10.3 extend()

在列表末尾追加另一个序列中的多个值

li1=[1,2,3]
li2=[4]
li1.extend(li2)
print(li1)         # [1, 2, 3, 4]

10.4 insert(index,obj)

将对象插入列表

li1=[1,2,3]
li1.insert(2,4)  
print(li1)        # [1, 2, 4, 3]

10.5 index()

从列表中找出某个值第一匹配项的索引位置

li1=[1,2,3,1]
print(li1.index(1))   # 0

10.6 clear()

清空列表

li1=[1,2,3]
li1.clear()
print(li1)     # []

注意:其中的类似 append,insert, remove 等方法会修改列表本身,并且没有返回值(严格的说是返回None)。

11、列表的复制

(1)copy: 浅复制 ,不会产生一个独立的对象单独存在,它只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。

(2)deepcopy: 深复制 ,将被复制对象完全再复制一遍作为独立的新个体单独存在,故改变原有被复制对象不会对已经复制出来的新对象产生影响。

(3.1) 对于简单的object,copy和 deepcopy没区别。

copy

import copy
a=[1,2,3,4]
b=copy.copy(a)
a[2]=6
print(a)    # [1, 2, 6, 4]
print(b)    # [1, 2, 3, 4]

deepcopy

import copy
a=[1,2,3,4]
b=copy.deepcopy(a)
a[2]=6
print(a)    # [1, 2, 6, 4]
print(b)    # [1, 2, 3, 4]

(3.2) 复杂的object, 如嵌套列表,copy中的子list并未从原object中真的「独立」出来,即如果你改变原object的子list中的元素,copy的内容会跟着一起变

copy

import copy
a=[1,2,[3,4]]
b=copy.copy(a)
a[2][0]=6
print(a)    # [1, 2, [6, 4]]
print(b)    # [1, 2, [6, 4]]

deepcopy

import copy
a=[1,2,[3,4]]
b=copy.deepcopy(a)
a[2][0]=6
print(a)    # [1, 2, [6, 4]]
print(b)    # [1, 2, [3, 4]]

二、列表推导式

1. 例题

将列表中小于0的元素平方后添加到新的列表

li=[1,2,3,-4,-5]
li2=[i**2 for i in li if i < 0]
print(li2)     # [16, 25]

方法二: 匿名函数 lambda

li=[1,2,3,-4,-5]
li3=list(filter(lambda i:i<0,li))   # filter过滤出符合条件的
li4=list(map(lambda i:i**2,li3))
print(li4)     # [16, 25]

2.推导式的嵌套

li=[i+j for i in '12' for j in 'ab']
print(li)      # ['1a', '1b', '2a', '2b']
dic={'name':'wj','age':18}
li1=[k+':'+str(v) for k,v in dic.items()]
print(li1)     # ['name:wj', 'age:18']
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值