Python序列结构(第二章)

Python序列结构

python序列结构属于容器类结构,用于包含大量数据,类似于其他语言的数组,其功能更强大。

1. 列表(list,[   ])

创建列表:

>>>a_list=['a', 'b', 'c']       #1.赋值创建

>>>a_list=[]                          #2.创建空列表

>>>

List函数可以将元组,range对象,字符串,字典,集合或可迭代对象转换为列表

#元组转换

>>>a_list=list((1,2,3,4))

>>>a_list

[1,2,3,4]

>>>

删除列表:

>>>a_list=['a', 'b', 'c']

>>>del x

>>>

列表元素访问:

>>>a_list=['a', 'b', 'c', 'd']

#整数访问

>>>a_list[1]       #正整数访问,下标以0开始从左到右

'b'

>>>a_list(-1)      #负整数访问,下标以0开始从右到左,这里的负数按照生活中解释为倒#数第几个

'c'

>>>

列表用法:

1. append(),insert(),extend()

>>>a_list=['a', 'b', 'c', 'd']

>>>a_list.append('e')                 #尾部追加元素

>>>a_list.insert('aa',0)              #在指定位置插入,在下标为0,插入’aa’,其他元素后移

>>>a_listk.extend(['f','g'])                  #在尾部追加多个元素

>>>a_list

['aa', 'a', 'b', 'c', 'd', 'e', 'f','g']

>>>

2. pop(),remove(),del

>>>a_list=['a', 'b', 'c', 'd', 'b']  

>>>a_list.pop()  
                  #弹出并返回指定尾部元素(默认为最后一个元素)从左到右
'b'

>>>a_list.remove('b')                 #删除列表中第一个值与指定值为2相等的元素

>>>a_list

['a', 'c', 'd', 'b']

>>>del a_list[3]                            #删除指定位置上元素

>>>a_list

['a', 'c', 'd']

>>>

注:指定位置不是合法索引将抛出异常,列表不存在该元素将抛出异常

3. sort(),reverse()

>>>x=list(range(5))    #包含5个整数的列表
>>>x
[0,1,2,3,4]
>>>import random
>>>random.shuffle(x)    #列表顺序随机打乱
>>>x
[0,4,1,2,3]
>>>x.extend([12,123])   #在尾部增加多个元素
>>>x

>>>x.sort(key=lambda item:len(str(item)),reverser=True)    #按照转换成字符串以后的长度
>>>x                                            #reverser=True   这里的是降序排列
[123,12,0,4,1,2,3]
>>>x.reverse()        #原地翻转
>>>x
[3,2,1,4,0,12,123]    
>>>

sort()用法: 按照指定的规则对列表中所有元素进行原地排序(如果里面没有指定规则排序也就是默认排序)

reverser()用法:将列表所有元素原地翻转,也就是第一个变最后一个,最后一个变第一个,第二个元素变倒数第二个,类推。

4. 列表中的zip()函数

用法:

多个列表元素重新组合,长短不同,以短的为准。例:

>>>x=[1,2,3,4,5]
>>>x
[1,2,3,4,5]
>>>y=list([1]*3)
>>>y
[1,1,1]
>>>list(zip(x,y))
[(1,1),(2,1),(3,1),(4,1),(5,1)]
>>>

以元组的方式迭代对象。例:

>>>list(zip(range(1,4)))
[(1,),(2,),(3,)]
>>>

可以把enumerate对象转换为列表,元组,集合 。例:

>>>x=[1,2,3,4,5]
>>>list(enumerate(x))
[(0,1),(1,2),(2,3),(3,4),(4,5)]
>>>

5.for循环的用法

for循环的遍历用法:

[  元素出现方式   for 变量  in  范围  条件 ]          #注:这里的 [  ]  是以什么方式遍历,可以为无组,集合等

例:

>>>from random import randint
>>>x=[randint(1,10) for i in range(10) if i>0]   #10个1-10的整数(不包含10)
>>>x
[9,5,6,7,8,1,3,4,1,2]
>>>

for的嵌套使用:

>>>[(x,y) for x in [1,2,3] if x==1 for y in [3,1,4] if y!=x]
[(1,3),(1,4)]

等价于

>>>a_list=[]
>>>for x in [1,2,3]:
   if x==1:
        for y in [3,1,4]:
            if y!=x:
                a_list.append((x,y))
>>>a_list
[(1,3),(1,4)]
>>>

注:前者代码简洁,可读性差,后者可读性比较好

列表推导式

在逻辑上列表推导式相当于循环语句,只是形式上更加简洁,对于初学者来说可读性不是很好,列表推导式通过 [  ] 括起,内是循环语句

例如:

>>>a_list=[x+x for x in range(30)]    #生成列表推导式

等价于有循环体的循环语句: 

>>>a_list=[]
>>>for x in range(30):
   a_list.append(x+x)

 

切片

切片适用于列表,元组,字符串,range对象。在列表中切片可以截取列表中的任何部分,还可以增加修改和删除列表中的部分元素

语法:

列表名 [ start : end : step]       

注:

start表示切片开始位置,默认为0 ; end表示切片截止位置(不包含),默认列表长度 len(list); step 表示切片的步长,默认为1,为负数时,为反向切片

为默认值时均可以省略,step为1时,前面的:也可以省略

1. 切片获取列表部分元素

>>>a_list=[3,4,5,6,7,8]
>>>aa=a_list[::]        #返回列表中所有元素,形成新的列表
>>>aa
[3,4,5,6,7,8] 
>>>a_list[::-1]         #返回列表的逆序列表
[8,7,6,5,4,3]
>>>a_list[::2]          #从下标0开始,隔一个取一个
[3,5,7]
>>>a_list[2:4]          #从按照下标位置,指定开始位置和结束位置,指定截取
[5,6]
>>>a_list[2:10]          #指定结束位置大于列表长度,从列表尾部截取
[5,6,7,8]
>>>

2. 切片增加列表元素

>>>x=[3,4,5]
>>>xx=x[:0]=[1,2]    #在列头增加多个元素
>>>xx
[1,2]
>>>x
[1,2,3,4,5]
>>>x[len(x):]=[6]    #在列尾增加元素,len()表示原列表大小
>>>x
[1,2,3,4,5,6]
>>>x[3:3]=[44]        #指定位置上插入元素(以下标为准),这里可以是一个,也可以是多个元素插入
>>>x
[1,2,3,44,4,5,6]
>>>

 注意3这种情况:(插入变替换)

3. 切片替换修改列表元素

>>>x=[1,2,3,4,5,6,7]
>>>x[4:6]=[44,55,66]
>>>x
[1,2,3,44,55,66,7]
>>>

 这种连续的插入会替换原来元素(表示4到6为44,55,66)

>>>x=[1,2,3,4,5,6]
>>>x[::2]=['a','b','c']
>>>x
['a',2,'b',4,'c']
>>>

注: 隔一个修改一个,切片不连续时等号两边列表长度必须相等

4. 切片删除列表元素

>>>x=[1,2,3,4,5,6]
>>>x[2:3]=[]
>>>x
[1,2,4,5,6]
>>>

del与切片相结合删除元素(可以是不连续的)

>>>x=[1,2,3,4,5]
>>>del x[::2]
>>>x
[2,4]
>>>
发布了59 篇原创文章 · 获赞 3 · 访问量 4775

猜你喜欢

转载自blog.csdn.net/CDZAllier/article/details/100578099