Python笔记(三):数据结构

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}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • Python简介 Python历史 Python 是由 Guido van Rossum 在八十年代末和九十年代初...
    莫名其妙的一生阅读 984评论 0 2
  • 1. 数值类型 ** int 整数 **如:1,100,-8080,0,十六进制:0xff00,0xa5b4c3d...
    泊牧阅读 237评论 0 0
  • 本文为《爬着学Python》系列第九篇文章。 从现在开始算是要进入“真刀真枪”的Python学习了。之所以这么说,...
    SyPy阅读 2,094评论 0 14
  • 文/静和 (一)回忆不及初见时 新年伊始,陈星把头像换成了大话西游里的悟空,北都皱了皱眉,嫌弃的对陈星说,你这头像...
    静和queen阅读 515评论 12 6