第二章Python序列-列表

列表:

1.创建列表

(1)直接将一个列表对象赋给变量

>>> a=[1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]
>>> a_list=['a','b','mpilgrim','z','example']
>>> a_list
['a', 'b', 'mpilgrim', 'z', 'example']
>>> a_list=[]  #创建空列表
>>> a_list
[]
>>> 

(2)用list()将其他类型转化为列表

>>> a=list(range(1,10))  #范围是左闭右开的
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=list(range(10))#省略1,从0开始
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=list(range(1,10,2))#从1开始的奇数
>>> a
[1, 3, 5, 7, 9]

2.访问和修改

双向索引

(1)访问:通过索引

>>> a
[1, 3, 5, 7, 9]
>>> a[0]
1
>>> a[-5]
1

(2)通过for语句

>>> a
[1, 3, 5, 7, 9]
>>> for data in a:
    print(data)

    
1
3
5
7
9

修改

3.列表元素的增加

(1)运算符 +(合并列表,生成一个新列表) +=(合并列表,原地操作) * (列表元素重复)

>>> x=[1,2,3,4,5,6]
>>> y=[4,7,8,5,6,9]
>>> id(x)#x地址
2439429513472
>>> id(y)#y地址
2439429650496
>>> z=x+y#合并列表
>>> z
[1, 2, 3, 4, 5, 6, 4, 7, 8, 5, 6, 9]
>>> type(z)#z的类型
<class 'list'>
>>> id(z)
2439426517760
>>> x=x+y
>>> x
[1, 2, 3, 4, 5, 6, 4, 7, 8, 5, 6, 9]
>>> id(x)
2439397895424
>>> x=[1,2,3,4,5,6]
>>> id(x)
2439429513472
>>> x+=y
>>> x
[1, 2, 3, 4, 5, 6, 4, 7, 8, 5, 6, 9]
>>> id(x)
2439429513472
>>> y
[4, 7, 8, 5, 6, 9]
>>> y*3
[4, 7, 8, 5, 6, 9, 4, 7, 8, 5, 6, 9, 4, 7, 8, 5, 6, 9]
>>> y   #y不变
[4, 7, 8, 5, 6, 9]

(2)append()方法

语法:append(object)

>>> y
[4, 7, 8, 5, 6, 9]
>>> y.append(0)   #原地修改列表,速度快,是真正意义上的在列表尾部添加元素,也是最推荐的方法
>>> y
[4, 7, 8, 5, 6, 9, 0]

(3)指定位置添加 insert()

语法:insert(index,object)

>>> y
[4, 7, 8, 5, 6, 9, 0]
>>> y.insert(3,1)   #在下标为3的位置上插入元素6,该位置之后的元素向后移动
>>> y
[4, 7, 8, 1, 5, 6, 9, 0]

(4)extend()可以将另一个可迭代对象的所有元素添加至该列表对象尾部

entend()方法来增加列表与元素也不会改变列表的内存首地址,属于原地操作、

>>> a
[1, 3, 5, 7, 9]
>>> id(a)
2439429649024
>>> a.extend([7,8,9])
>>> a
[1, 3, 5, 7, 9, 7, 8, 9]
>>> id(a)
2439429649024

4.列表元素的删除

(1) del命令

使用del命令删除列表中指定位置上的元素,后面的元素自动向前移动

>>> a
[1, 3, 5, 7, 9, 7, 8, 9]
>>> del a[1]
>>> a
[1, 5, 7, 9, 7, 8, 9]

(2) remove() 删除首次出现的指定元素

>>> a
[1, 5, 7, 9, 7, 8, 9]
>>> a.remove(7)  #删除第一个7
>>> a
[1, 5, 9, 7, 8, 9]
循环+remove()
>>> x=[1,2,1,2,1,2,1,2,1]
>>> for i in x:
    if i==1:
        x.remove(i)

        
>>> x
[2, 2, 2, 2]

(3) pop()方法 pop([index])

删除并返回指定(默认为最后一个)位置上的元素,如果给定的索引超出列表的范围,则抛出异常

>>> a
[1, 5, 9, 7, 8, 9]
>>> a.pop()  #默认删除最后一个
9
>>> a
[1, 5, 9, 7, 8]
>>> a.pop(1)  #删除下标为1的值
5
>>> a
[1, 9, 7, 8]

(4) clear()方法:删除列表对象中所有元素

>>> a=[1,2]
>>> a.clear
>>> y
    []

5.查找、 计数、成员判定

(1)查找:index()

>>> a
[1, 2, 3, 1, 6, 5, 1, 4, 5, 1, 2, 6]
>>> a.index(2)   #首次出现的缩引
1
>>> a.index(6)
4

(2)计数: count()\

>>> a
[1, 2, 3, 1, 6, 5, 1, 4, 5, 1, 2, 6]
>>> a.count(1)
4
>>> a.count(0)
0

(3)成员判定 in not in

>>> a
[1, 2, 3, 1, 6, 5, 1, 4, 5, 1, 2, 6]
>>> 1 not in a
False
>>> 0 not in a
True

6.切片操作

切片操作是python中有序序列的重要操作之一,适用于列表,元组,字符串,range对象等类型。

语法:[start:stop:stop]

第一个数字表示切片的开始位置(默认为0)

第二个数字表示切片的截至(但不包含)位置(默认为列表长度)

第三个数字表示切片的步长(默认为1),当步长省略时=可以顺便省略最后一个冒号

切片的作用:

  • 截取列表中任何部分得到一个新的列表
>>> a=[3,4,5,6,7,9,11,13,15,17]
>>> a[::]
[3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
>>> a[::-1]   #步长为负数,从右向左切,得到反向副本
[17, 15, 13, 11, 9, 7, 6, 5, 4, 3]
>>> a[::2]  #下标从0开始隔一个元素取一个元素
[3, 5, 7, 11, 15]
>>> a[1::2]  #下标从1开始,隔一个元素取一个元素
[4, 6, 9, 13, 17]
>>> a[3::]   #下标从3开始往后的所有元素
[6, 7, 9, 11, 13, 15, 17]
>>> a[3:6]  #下标范围介于[3,6)元素
[6, 7, 9]
>>> a[3:6:1]
[6, 7, 9]
>>> a[0:100:1]  #在尾部截断不会抛出异常
[3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
>>> a[100:]
[]
  • 修改和删除列表中的部分元素
  • 为列表对象增加元素
>>> a=[1,2,3]
>>> a[len(a):]=[9]  #在尾部追加元素
>>> a
[1, 2, 3, 9]
>>> a[:3]=[1,2,3]  #替换前三个元素
>>> a
[1, 2, 3, 9]
>>> a[:3]=[]  #删除前三个元素
>>> a
[9]

7.排序与逆排序

使用自身提供的sort()方法可以进行原地操作

>>> a=[3,4,5,6,7,8,9,11,23,45]
>>> import random
>>> random.shuffle(a)   #随机打乱顺序
>>> a
[6, 5, 45, 3, 11, 7, 4, 9, 23, 8]
>>> a.sort()  #默认为升序排序
>>> a
[3, 4, 5, 6, 7, 8, 9, 11, 23, 45]
>>> a.sort(reverse=True)
>>> a
[45, 23, 11, 9, 8, 7, 6, 5, 4, 3]
>>> a.sort(key=lambda x:len(str(x)))  #按转换为字符串后的长度排序
>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]

8.内置函数:sorted sum max min len

  1. sorted()

sorted()对列表进行排序,与列表对象的sort()方法不同,内置函数sorted()返回新的列表,并不对原列表进行任何修改

>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]
>>> sorted(a)  #进行排序
[3, 4, 5, 6, 7, 8, 9, 11, 23, 45]
>>> sorted(a,reverse=True)  #降序排列
[45, 23, 11, 9, 8, 7, 6, 5, 4, 3]
>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]

2.sum(列表)

对列表元素进行求和运算

同样也适用于元组,集合,range对象,字典,以及map对象和filter对象等等

>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]
>>> sum(a)  #元组求和
121
>>> a={1:1,2:5,3:8}  #对字典的“键”进行求和
>>> sum(a)
6
>>> sum(a.values())
14
>>> sum([[1],[2]],[])  #元素不是数值时需要指定第二个参数
[1, 2]

3.max min

返回列表中最大最小元素

同样适用于元组,字符串,集合,range对象,字典和迭代器对象等等

>>> a=[3,4,5,6,7,8,9,11,23,45]
>>> max(a)
45
>>> min(a)
3

4.len()

返回列表中的个数,同样适用于元组,字典,集合,字符串和range对象

>>> a
[3, 4, 5, 6, 7, 8, 9, 11, 23, 45]
>>> len(a)
10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值