Python笔记(三):数据结构

作者: 脑阔不疼 | 来源:发表于2017-07-22 11:47 被阅读0次

type命令


检查值或变量的数据类型

>>> type(5)

<class 'int'>

>>> type('str')

<class 'str'>

>>> type(print)

<class 'bulitin_function_or_method'>

序列(按顺序排列)


内置序列类型

字符串、元组、列表

序列特征

第一个正索引为0,指向左端。

第一个负索引为-1,指向右端。

可用切片法复制子序列。eq, 

seq1=seq[begin:end]   #复制seq从索引begin指向的元素到索引end-1的元素。

可用'+'和'*'进行拼接。(拼接时序列类型需相同。)

可使用len()计算长度。(含空格,不含结束符)

表达式 x in s 检查序列s是否包含元素x返回boolean值

元组(不可变)


元组用圆括号括起,其中元素用逗号隔开

元组可以包含任何python值(包括元组。)

>>> i=(1,'one',('hehe',),[1,2,3])

>>> print(i)

(1, 'one', ('hehe',), [1, 2, 3])

>>> len(i)

4

>>> i[-1]

[1, 2, 3]

#空元组用()表示。

#含单元素的元组采用不同的表示法(x,),元素后逗号不可省略。若省略了元素后的逗号,就只是将表达式括起来而已。

>>> i=(1) 

>>> type(i)

<class 'int'>

>>> i=(1,)

>>> type(i)

<class 'tuple'>

元组不可变

与字符串、整数、浮点数相同,元组本身不可变。但指向元组的变量可变

若要修改元组,则必须创建一个体现更改的新元组。

>>> i[0]=0

Traceback (most recent call last):  

    File "", line 1, in

TypeError: 'tuple' object does not support item assignment

元组函数

x in tup  #检查元素x,返回boolean

len(tup)  #元组元素个数

tup.count(x)  #x在元组中出现个数

tup.index(x)  #元组中第一个出现的x的索引,若无x,则报错ValueError异常。

元组可以用“+”和“*”拼接对变量使用

列表(使用频率远高于元组)(可变)


方括号括起(类似C++里的数组)

可用len()获取元素个数

可用“+”和“*”拼接。

可用索引和切片访问和复制列表

与元组不同,单元素列表可不写逗号。

列表亦可包含所有类型值。

>>> list=[1,'hehe',5.0,(1,2,3),[1,2]]

>>> print(list)

[1, 'hehe', 5.0, (1, 2, 3), [1, 2]]

列表是可变的

列表元素指向(而非包含)相应的值,可通过索引改变元素值。#被替换的值自动删除。

>>> list[0]=0

>>> print(list)

[0, 'hehe', 5.0, (1, 2, 3), [1, 2]]

~自引用列表

让列表一个元素指向列表自身,创建一个自引用的数据结构。

>>> list[0]=list

>>> print(list)

[[...], 'hehe', 5.0, (1, 2, 3), [1, 2]]

列表函数

s.append(x)  #在列表末尾添加元素x

s.count(x)  #x出现次数

s.extend(lst)  #将lst所有元素都添加到列表s末尾

s.index(x)  #返回元素x的索引

s.insert(i,x)  #将元素x插入到索引i指定的元素前面,结果是s[i] ==x

s.pop(x)  #删除并返回s中索引为i的元素,无参时删除并返回最后一个元素

s.remove(x)  #删除s中第一个x元素

s.reverse()  #反转s中元素的排列顺序,不会生成拷贝

s.sort()  #将s的元素按升序排列(同类型);元素为元组或列表时,比较第一项,第一项相同比第二项...

列表解析(实例说明)

通式:[元素表达式 通过for循环获取元素]

>>> list=[n*n for n in range(1,10)]

>>> list

[1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> list=[a for a in 'hehe']

>>> list

['h', 'e', 'h', 'e']

~使用列表解析进行筛选

#筛选正数

>>> num=[-1,-2,-3,6,2,5]

>>> result=[n for n in num if n>0]

>>> result

[6, 2, 5]

#去除元音

#eatvowels.py

def eatvowels(s):

    return ''.join([c for c in s if c.lower() not in 'aeiou'])

string='Hello world'

print(eatvowels(string))

——> Hll wrld

#join()函数(str.join(seqence)):返回字符串,形参为序列,用str连接序列元素。

字典(关联数组,映射,散列表)(无序)(值可变)


大括号表示{},储存方式:键 ——> 值,可用键访问和修改值(此时用中括号)。

>>> birth={'xyqc':625,'wwx':1026,'lwt':1031}

>>> birth

{'xyqc': 625, 'wwx': 1026, 'lwt': 1031}

>>> birth['xyqc']

625

在一个字典中,任何两个键值对的键不能相同

键是不可变的。字典键不能是列表或字典。

字典函数

d.items()  #返回一个由d的键-值对组成的视图(view)

d.keys()  #返回一个d的键组成的视图

d.values()  #返回一个d的值组成的视图

d.get(key)  #返回与key相关联的值

d.pop(key)  #删除键key并返回与之关联的的值

d.popitem()  #返回字典d的某个键-值对

d.clear()  #删除字典d的所有元素

d.copy()  #复制字典d

d.fromkeys(s,t)  #创建一个新字典,其中的键来自s,值来自t

d.setdefaluts(key,v)  #如果键key包含在字典d中,则返回其值;否则,返回v并将(key,v)添加到字典d中

d.update(e)  #将e的键-值对添加到字典d中;e可能是字典,也可能是键-值对序列

集合


一系列不重复的元素。

类似于字典,只包含键,而没有相关联的值,且顺序不确定

分类:可变集合和不可变集合。

常见用途:删除序列中重复元素。

list=[1,1,1,3,3,3,5,5,5]

s=set(list)

print(s)

——>  {1,3,5}

相关文章

网友评论

    本文标题:Python笔记(三):数据结构

    本文链接:https://www.haomeiwen.com/subject/vlxukxtx.html