python中序列是最基本的数据结构,他是一块用于存放多个值的连续内存空间。python中内置了5个常用的序列结构,分别是列表、元组、集合、字典和字符串。
1、序列:存放多个值的连续内存空间。
序列包括:列表[ ],元组 ( ),字典{a:b},集合set={ a,b},字符串:”asdc”
其中:集合和字典不支持索引、切片、相加和相乘操作。
序列索引:正序索引,从0开始到n-1,倒序索引:从-(n-1)开始,到-1结束
切片:name[start:end:step]
相加:name1+name2
乘法: name*2 表示name+name
空序列: [None]
检测某个元素是否是序列的成员: x in sequence
计算序列的长度、最大小值: len( )\、max( )、 min( )
其他内置函数:
list() | 将序列转换为list |
str() | 将序列转换为字符串 |
sum() | 计算元素和 |
sorted() | 排序 |
reversed() | 将原序列元素反向 |
enumerate() | 将序列组合为一个索引序列 |
python 中查看数据类型:
内置函数isinstance(object, (type1,type2…))
isinstance(‘content’, str)
返回True or False
使用内置函数type(object)
print(type(1))
print(type(‘content’))
2、列表 list
列表中的元素可以是任意各种类型的组合。
list(seqence ) 将序列转换为列表
listname=[a,v,bd,d]
访问序列元素 :
for i in list:
for index, item in enumerate(list):
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
enumerate(sequence, [start=0])
sequence -- 一个序列、迭代器或其他支持迭代对象。
start -- 下标起始位置。
添加元素: list.append(“x”)
添加多个元素: list.extend(seqence)
根据元素值删除元素: list.remove(value)
统计指定元素出现次数:list.count(obj)
获取指定元素首次出现的下标:list.index(obj)
统计元素和:sum(iterable[,start])
start表示统计结果需要在 加上start值。 start — 指定相加的参数,如果没有设置这个值,默认为0。
排序: list.sort(key=None,reverse=False)
- key — 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。如设置key=str.lower,表示在排序时候不区分字母大小写。
- reverse — 排序规则,reverse = True 降序, reverse = False 升序(默认)。
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=takeSecond)
个人理解:首先将list元素送到key定义的函数中 ,然后再把返回值进行排序。
排序:使用内置的sorted函数: sorted(iterable,key=None,reverse=False)
列表推导式:
list=[expression for x in range]
range是 range ()函数生成的range对象
从x中筛选满足codition的x
list = [expression for x in range if condition]
二维列表:[[ ],[ ],[ ]]
使用for循环创建:
for i in range(4):
arr.append([])
for j in range(5):
arr[i].append[j]
列表推导式创建:
arr = [[j for j in range(6)] for i in range(4)]
3、元组:不可变的列表,定义以后不可修改,只能重新定义
A=(1,2,3,4)
tuple 元组:不可修改,在python中,元组使用一对小括号将所有元素括起来,但小括号并不是必须的,只需要将一组值用逗号分隔开,python就可以视为元组 B=1,2,3,4,5 也是元组
创建元组 tuple(data)
题外话:print(“ddd”,end=” “) //表示不换行输出
因为元组不可修改,因此需要对元组中某个元素修改时需要重新定义元组:
A=(“W”,”Q”)
A=(“w”,”q”)
元组推导式:和list类似,将[ ]变为( ),并在最外面还要嵌套一层tuple( ):
x= (i for i in range) //这句生成的结果不是一个元组,而是一个生成器对象,因此需要千年套一层tuple()
tuple(x)就是元组
4、字典 dict( ) == c++中的Map
dictionary={‘key’:’value’}
创建字典:
dictionary = dict(zip(list1,list2))
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
dictionary = dict(‘key1’=’value1′,’key2’=’value2’,….)
创建值为空的字典: dictionary = dict.fromkeys(list)
获取指定键的值:
dictionary.get(key[,default])
遍历字典:
dictionary.item() 返回“键-值”列表
for item in dictionary.item(): 获得每一个键值对元组:(key,value)
for key,value in dictionary.item(): 获得每一个键-值
字典推导式:
dictionary = {i:j for i,j in zip(list1,list2)}
5、 集合 set():{ }集合中元素不重复,用于自动去重
创建set :x = {1,2,3 }
y=set(iteration)
创建空集合 z =set( )
集合的增删:
setname.add(element) //添加元素
setname.remove(element) //删除 元素
setname.pop() //删除元素
setname.clear() //清空set
集合的交并差补运算: & | – ^
实例: c = set1&set2
6、字符串str()
拼接字符串:+
转换字符串 str(num)
计算字符串长度 len(str)
计算字符串所占字节数: len(str.encode())
字符串编解码 str.encode() str.decode()
截取字符串 string[start:end:step] (前闭后开)
分割字符str.split(seq,maxsplit)
seq — 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
maxsplit 分割次数。默认为 -1, 即分隔所有。
合并字符:string.jion(iterable) // string 合并符,用于合并时候的分隔符
检索字符串
str.count(sub[,start,end]) //统计sub出现的次数
str.find (sub[,start,end])// 检索是否存在sub,不存在返回-1,否则返回首次出现的位置
str.index (sub[,start,end])// 检索是否存在sub , 返回首次出现的位置 ,如不存在会报异常
str.startwith(prefix[,start,end]) //判断是否以prefix开头,返回true or flase
str.endwith(prefix[,start,end]) //判断是否以prefix结尾,返回true or flase
大小写转换: str.lower() str.upper()
去除字符串中的空格和特殊字符
str.strip([chars]) // chars :要去除的字符,默认是去除空格、制表符\t,回车符\r 换行符\n
str.lstrip([chars])
str.rstrip([chars])