python学习记录12

序列总结

(1)序列

序列是一种内部元素为带有编号的值空间向量,这些编号叫做索引,例如一条字符串就是一个序列。一切对象皆有布尔值,序列的布尔值为:非空序列布尔值为True,空序列布尔值为False。

因为序列是带有索引的多维变量,有正向递增索引[0,N-1],反向递减索引[-1,N]因此可以根据索引进行输出单个元素或子向量的切片操作,以及使用len()函数计算有限序列的长度。

除了上述操作外,还有以下基本操作:

s1+s2#将两个同类序列相加

s*N#将一个序列自己相加N次

x in sequence#判断序列中是否有元素的值为x,有则输出True,无则输出False

x not in sequence#是与上面式子的逆否判断

max(sequence)#查找序列中的最大值

min(sequence)#查找序列中的最小值

sequence.count()#统计序列中元素个数

sequence.index(x)#查找第一个值为x的元素,没有则报错

(2)组合数据类型

组合数据类型有四类:列表list、元组tuple、字典dict、集合set,其定义的方式都可以用定义符或者自带函数,分别为:

list = [element1,element2,……];或者 l = list()

tuple = (element1,element2,……);或者t =tuple()

dict = {key1:value1,key2:value2,……};或者 d = dict(zip(s1,s2))其中s1和s2等长,可以是列表,元组,集合

set ={element1,element2,……};或者 s =set()

列表、字典、集合属于可变序列,元组属于不可变序列。可变序列指可以将序列的维数以及内部元素进行更改,方法是对序列进行增加元素、删除元素、更改元素的操作。每种序列都有自己的增、删、改、查操作。

增加:append()#在列表最后加入元素;insert()#在列表中间加入元素;add()#集合增加一个元素

删除:remove()#检查列表或者集合中是否有该元素,若有则删除;pop()#输出字典对应key值的键值对并删除,列表输出元素并删除;popitem()#输出一个元组形式的键值对并删除;clear()#清空序列;del#删除序列

更改:sort()、sorted()#列表排序;reverse()#列表反向,reverse没有返回值;copy()#复制列表;

查询:get()#查询字典单个值;keys()#获取字典的所有键;values()#获取字典的所有值;items()#获取字典的所有键值对

列表和元组中的元素可重复,字典的key不可重复但value可重复,集合的元素不可重复

列表和元组是有序序列,其索引是从0开始的连续整数,其序号值可以对应索引值。字典和集合是无序序列,字典的底层数据结构为哈希表。

除此之外,这四个序列都有遍历和生成式的操作

遍历:使用for-in:for i in sequecce 或者使用enumerate函数: for i,j in enumerate(sequence),其中字典的遍历没有enumerate函数,且遍历出key、value是元组类型的数据

例:

for i in l:
    print(i)
for i,j in enumerate(l):
    print(i,j)

生成式:使用for-range语句或者for-range-if语句。

例:

l1 = [i for i in range(1,10)]
l2 = [i for i in range(1,10) if i%2==0]
print(l1,l2)

3.11新特性

(1)结构匹配

python中的模式匹配match-case语句不光可以匹配变量,还可以匹配序列。

data1 =eval(input())
match data1:
    case {1:2,2:3}:
        print('字典')
    case(1,2,2,3):
        print('元组')
    case[1,2,2,3]:
        print('列表')
    case _: #case _指的是匹配默认值
        print('其他')

(2)合并字典

python 3.11可以使用竖线|将两个字典合并到一起

dic1 ={'xiaowei':166,"xiaohong":167}
dic2 ={"xiaogang":178,"xiaoming":176}
dic = dic1|dic2
print(dic)

(3)同步迭代

3.11可以对两个序列合并成字典,并对该字典中的key和value进行同步迭代。

语句为:

for data1,data2 in zip(sequence1,sequence2)

match data1,data2:

        case element1,element2:

                执行语句1

 ……

data1 =[1,2,3,4,5]
data2 =[2,4,6,8,10]
data = zip(data1,data2)
for data1,data2 in data:
    match data1,data2:
        case 1,2:
            print(1)
        case 2,4:
            print(2)
        case 3,8:
            print(3)#不匹配的序列
        case 4,6:
            print(4)#不匹配的序列
        case 5,10:
            print(5)

同步迭代的序列尽量使用列表或元组,因为集合是无序的。

你可能感兴趣的:(学习,开发语言,python)