python 中的序列

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])

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注