列表

1 序列简介(squence)

   字符串 str 

   列表 list

   元组 tuple

2列表定义

a)      列表中有一系列特定元素组成的,元素之间可能没有任何关联,但是他们之间有先后顺序关系;

b)      列表元素可以使任何类型的  列表,元组,字符串,整型等等;

列表可以改变各个元素的值;

c)       列表是一种容器;

d)      一个列表中的元素的可以是不同类型;

e)      元素可重复;

3 创建空列表

          L= []

          L= list()

4 创建非空列表

   L =[1,2,2,4,3]

   L =[“zhang”,”houhui”]

   L =[1,1.0,[2,”SHANGHAO”],4]

5 列表的生成函数list()

   List()生成一个空列表 等同于[]

   List(iterable)用可迭代对象初始化一个列表

   L=  List(“hello”)   #执行结果 L –>  [“h”,”e”,”l”,”l”,”o”]

6列表运算
1)算术运算

+,+=,*,*=

(1)+加号运算符号

用于拼接列表(生成一个新的列表)

          X=[2,3,4]

Y= [3,4,5]

Z = X+Y  

(2)+=运算符

用于元列表与右侧列表拼接生成的新列表

                 X=[”shangha”,”hunan”,”Chongqing”]

                 X+= [1,2,3]

(3)* 运算符

用于生成重复的列表

                 L=3*[1,2]

                 L= [1,2] * 3

(4)*=

用元列表生成重复的列表,并改变变量的绑定

2) 关系(比较)运算

   >,<,<=,>=,==,!=

   (1)示例

    

第一种情况

   X=[1,2,3]

Y=[2,3,4]

X != Y  # True

X == Y  # False

X < Y  # True

X>Y  # False

 

第二种情况

X=[1,2,3]

Y = [3,2,0]

X < Y  # True

X>Y  # False

第3种情况

X=[1,2,3]

Y = [3,0,0]

X < Y       #True

X> Y  #False

 

第4种情况

Y = [3,0]

X=[1,2,3]

X < Y       #True

X> Y  #False

规律:

比较相等(==)和不等(!=)  长度和下标相同的元素对比

比较大小 即比较长度又比较内容  内容占先

3)列表的in/not  in 运算符

X = [1,’two’,3.0,’four’]

(1)示例

表达式

结果

 

1 in X  

#True

2 not in X

# True

“3”     in X

#False

3 in X

#True(注意)

7列表的基本操作
1)索引 index
(1)语法

列表名[index]

l[0]

等同于字符串索引:

                 正向索引:从0到(len(列表名)-1)

                 反向索引:-len(列表名)到  -1

注释:下标是0的位,也是-len位

   列表是可变的,可以通过索引赋值改变列表的元素

2)切片 slice
(1)语法

   [:][::]

[表达式1: 表达式2:表达式3]  

 注释:从下标为表达式1结果开始,按照表达式3结果的步长截取下标为表达式2结果之前的列表

(2)示例

M = [1,2,3,4,5,6]

M[1:2]  结果为 [2]

M[1:5:2]  结果为[2,4]

列表切片的规则等同于字符串切片规则

 

X = [1,2,2,3,4,5]

Y= X[1::2]  #Y=[2,3,5] 解释 1开始,2是步长

3)切片赋值

切片赋值可以改变元列表的排列,及插入删除数据

          列表中可以用切片改变列表对应元素的值

(1)示例

L =[2,3,4]

 

L[0:1] =[1.1,1.2]

#L=[1.1,1.2,3,4]

L[2:] =[3.3,4.4,5.5]

#L =[1.1,1.2,3.3,4.4,5.5]

L[:] =[3,4]     

#L =[3,4]

 #直接切出来原列表

L [1:1] =[3.3,4.4,5.5]

#L = [3,  3.3,  4.4,  5.5, 4]  相当于插入下标为1,

 

(2)示例

T=[1,2,3,4,5,6]

注意:步长大于1,可能会出现赋值错误问题

 

T[0::2] = [1.1,3.3,5.5]  

#T=[1.1,2,3.3,4,5.5,6] 替换原有元素

T[0::2] =[0.1,0.2]

#报错,切片有三个元素,只赋值两个

 

(3)示例

M = [1,2,3,4,5,6]

 

M[::2] =”ABC”

#对的  M[::2] 为 1,3,5

M[::2] = ‘ABCD’

#错的,多出一个字母D

 

(4)示例

 

M = [1,2,3,4,5,6]

 

>>> M = [1,2,3,4,5,6]

>>> M2 =M[::2]   #注释:此过程是创建一个新的列表

>>> M1=M    #注释:将M1和M同时绑定到列表[1,2,3,4,5,6],如果此列表改变,则M1和M同时改变

>>> M[::2]=[10,11,12] 

>>> M

[10, 2, 11, 4, 12, 6]

>>> M1

[10, 2, 11, 4, 12, 6]

>>> M2

[1, 3, 5]

注意:  M1, M, M2

切片赋值改变原有列表,不会生成新的列表 M1  M   绑定

切片值赋值,会生成新的列表  M2  M  绑定

变量其实是一个地址信息,这是python语言和其他语言不同的地方

8  python3中常用序列函数

len(x)   序列长度

   max(x)  序列最大值

   min(x)  序列最小值

   sum(x) 序列元素和

   any(x) 真值测试,如果列表中一个值为真值,则返回True

   all(x)   真值测试,如果列表中所有值都为True则返回True

9 python3中列表常用方法:

方法必须借助于对象调用,必须加(),函数则可以直接使用

见:help(list)

以下L代表列表 (增,删,改,排序,复制)

L.index(v[,begin[,end]])

返回对应元素的索引下标,begin为开始索引,end为结束索引 (v代表列表元素)

 

L.index(v,begin,end) 

begin end 均可省略

L.insert(index,obj)

将obj放入到指定的位置

L.count(x)

返回列表中元素的个数 (x是元素)

L.remove(x) 

从列表中删除第一次出现在列表中的值

 

L.copy()  

复制此列表(只能复制一层,不进行深层复制)

L1=L.copy();此时对L进行复制后,L1和L不是同一个列表;

                 >>> L=[20,30,40]

>>> L1=[10,L,50]   #列表的嵌套

>>> L2=L1.copy()

>>> L[0]=15

>>> L1

[10, [15, 30, 40], 50]

>>> L2

[10, [15, 30, 40], 50]

>>>                

其中如果修改L中的内容,L1和L2中的L均会变化

    如果修改L1特有的,则对L2不会产生影响   其实这里面是c语言中指针的概念

 

L.append(x) 

在列表末尾追加单个元素

 

L.extend(lst)

向列表追加另一个列表 (注意:L+=[4,5,6]生成一个新列表绑定到L;而用extend还是原有列表)

 

L.clear() 

清空列表 等同于L[:] =[](注意:此方法改变的是原有列表, L=[] 此时是将[]重新绑定到 L,是新列表)

L.sort(reverse=False)

将列表的顺序按值大小顺序进行排列  小→大(升序)  reverse=True(降序) 是从大到小

 

L.reverse()    

列表反转

 

L.pop([index])

删除索引对应的元素,如果不加索引,默认删除最后一个元素,同时返回移除元素

 

9列表的嵌套,上面有示例
10 复制列表

深拷贝和浅拷贝

   浅拷贝 shallow copy

          L.copy()

          L[:]   #切片复制是浅拷贝

   深拷贝 deep copy

                 是将对象逐层复制(复制后的对象完全独立)

     步骤:

                 1)import copy  导入copy模块

                 2)对象2 = copy.deepCopy(对象1)  #调用深拷贝函数进行复制

 

11 del运算符
1)作用

用于删除列表元素

2)示例

Cities = [“beijing”,”shanghao”,”guangzhou”]

                 删除shanghao

          Cities.remove(”shanghao”)

          Cities.pop(1)

          delcities[1]

12 列表是可迭代对象

          L=[2,3,5,7]

          Forx in L

                 Print(L)

13 列表推导式 list comprehension

列表推导式是用可迭代对象,依次生成列表内元素的方式

1)语法:

          [表达式  for变量 in 可迭代对象]

          或

          [表达式 for 变量 in 可迭代对象 if 条件表达式]

2)示例

# 要生成如下列表

          [1,4,9,16,······]

L =[x**2 for x in range(1,11,2)]

 

扩展:

 

L =[x**2 for x in range(1,11)]

L =[x**2 for x in range(1,11)  if x%2==1]

解释:取range中的数赋值给x,然后判断x是否满足条件,满足才进行最前面表达式的运算,否则从循环中继续取数

14列表推导式的嵌套
1)语法:

[表达式1  for  变量1  in  可迭代对象1  (if  条件表达式1) 表达式2   for  变量2 in  可迭代对象2 (if条件表达式2)]

2)示例

将列表[2,3,5]中的元素,与列表[7,11,13]的元素分别相乘,将得到的元素放于列表中

L = [x*y for x in [2,3,5]  for y in [7,11,13]]  #双重循环

   L =[x*y for x in [2,3,5]  if x%2==1  for y in [7,11,13] if  y%2==1]

注意 前后两个可迭代对象之间必须在最前面的表达式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值