Python学习笔记(二)Python容器:列表,元组

关于列表:

首先明确两点:列表是可变的,列表是可重复的。

使用[ ] 或list()创建列表:

列表可以包括零个或多个元素组成,元素之间用逗号隔开,整个列表被方括号所包裹:

empty_list=[ ]      

也可以使用list()函数来创建一个空列表:empty_list=list()

可以使用list()函数将其他数据类型转换为列表:

将字符串转换为列表: list('cat') --> ['c', 'a', 't']

将元组转换为列表:atuple('cat','dog')    list(atuple)-->['cat', 'dog']


使用[offset]获取元素:

和字符串一样,列表可以通过偏移量提取值:list[ offset ]

从左至右偏移量是从0开始,从右至左偏移量是从 -1开始。


包含列表的列表:

列表可以包含各种类型的元素,包括其他列表

list=['exp1',['exp2','exp3],'exp4']

可以通过双重索引获取内部列表的元素:list[1][1]


使用[offset]修改元素

list[num]='newstring'


指定范围并使用切片提取元素

marxes=['Groucho','Chico','Harpo']

使用切片获取一个子列表:marxes[0:2] -->['Groucho', 'Chico']

指定步长提取元素:marxes[::2]-->['Groucho', 'Harpo']

从尾部开始提取,步长仍然为2:marxes[::-2]-->['Harpo', 'Groucho']

使用切片实现列表逆序:marxes[::-1]-->['Harpo', 'Chico', 'Groucho']


使用append()添加元素至尾部

列表是可变的,把元素加到尾部:marxes.append("Droc")-->['Groucho', 'Chico', 'Harpo', 'Droc']


使用extend()或+=合并列表

使用extend()可以将一个列表合并到另一个列表中。

将others列表:others=['Guum','Karl']合并到marxes列表中:

marxes.extend(others)-->['Groucho', 'Chico', 'Harpo', 'Droc', 'Guum', 'Karl']

使用 += 也可以达到同样的效果


使用insert()在指定位置插入元素

insert()函数可以将元素插入到列表的任意位置,指定偏移量0可以插入到头部,如果偏移量超过尾部,则会插入到最后。

marxes.insert(3,"Hurry")-->['Groucho', 'Chico', 'Harpo', 'Hurry', 'Droc', 'Guum', 'Karl']


使用del删除指定位置的元素

可以通过del list[ num ]删除指定位置的元素,元素被删除后它后面的元素会自动的往前移动。

删除marxes偏移量为2的元素:['Groucho', 'Chico', 'Harpo', 'Hurry', 'Droc', 'Guum', 'Karl']

del marxes[2]-->['Groucho', 'Chico', 'Hurry', 'Droc', 'Guum', 'Karl']

del就像是赋值(=)的逆过程:它将一个python对象与它的名字进行分离。如果这个对象无其他引用,则其占用空间也将被删除。


如果不确定或者不关心元素的位置,可以通过remove()根据指定的值删除元素。

删除Chico:marxes.remove("Chico")-->['Groucho', 'Hurry', 'Droc', 'Guum', 'Karl']

经验证,使用remove()并不会把全部的指定值删除,而是按照顺序逐个删除。


使用pop()获取并删除指定位置的元素

pop()是先获取对应位置的元素,然后将其删除。如果为pop()指定了偏移量,它会返回偏移量对应位置的元素;如果没有指定,默认使用-1。也就是说pop()或pop(-1)都将删除最后的元素。

使用pop()删除最后的元素:marxes.pop()-->['Groucho', 'Hurry', 'Droc', 'Guum']


使用index查询具有特定值的元素的位置

查询Harry的位置:marxes.index("Hurry")-->1


使用in判断值是否存在列表中

判断Hurry是否存在列表中:"Hurry" in marxes-->True


使用count()记录特定值出现的此数

使用count()可以记录某一特定值在列表中出现的次数:

查询Hurry出现的次数:marxes.count("Hurry")-->1


使用join()转换为字符换

join()函数是split()函数的逆过程,join()函数的参数是字符串或者其他任何可迭代的包含字符串的序列,它的输出是一个字符串。

使用 * 将marxes拼接成一个字符串:'*'.join(marxes)-->'Groucho*Hurry*Droc*Guum'


使用sort()重新排列元素

python提供了两个函数进行列表元素的排序:

列表方法sort()会对原列表进行排序,改变原列表的内容

通用函数sorted()则会返回好排序的副本,原列表内容不变

如果列表中都是数字,则默认按照升序进行排序。如果元素都是字符串,则会按照字母顺序排列。

当列表中的元素都是同一种类型的时候,sort()会正常工作,有时候多种类型(例如整型和浮点型)只要它们之间能够相互转换也可正常工作。

默认的排序是升序的,通过添加参数reverse=True可以改变为降序排列

栗子:

```

numbers=[1,2,37,4.0]  numbers.sort(reverse=True)-->[37, 4.0, 2, 1]

In [60]: max = ['djs', 'fadsjnk', 'djs', 'djs']

In [61]: min = sorted(max)

In [62]: min

Out[62]: ['djs', 'djs', 'djs', 'fadsjnk']

In [63]: max

Out[63]: ['djs', 'fadsjnk', 'djs', 'djs']

```


使用len()获取长度

len()可以返回列表的长度:len(marxes)-->4


使用 = 赋值,使用copy()复制

赋值相当于对象多了个引用

如果将一个列表赋值给多个变量,改变其中任何一处会造成其他变量对应的值也会被修改。

使用下面的函数可以将一个列表的值复制到另一只新的列表中:

列表copy()函数    

list()转换函数

列表分片 [ : ]

首先我们新建一个列表:a=[1,2,3,4],然后利用copy()函数创建b,利用lis()函数创建c,并使用列表分片创建d:

a=[1,2,3,4]  b=a.copy()  c=list(a)  d=a[:]  

b,c,d都是a的复制:它们是自身带有值的新对象,与a所指的对象没有任何关系,改变a也不会影响b,c,d的值。


有关元组:

元组也是有任意类型的元素组成的序列。与列表不同的是,元组是不可变的。

使用()创建元组:

empty_tuple=()

创建包含一个或多个元素的元组的时候,每一个元素后面都需要跟着一个逗号,即使只包含一个元素也不能省略:  one_marex='Grupo',  如果创建的元组的元素个数大于1,则最后一个元组后面的逗号可以省略。

注意:定义元组靠的是每个元素后面的逗号,并不是括号

元组解包:可以将元组依次赋值给多个变量

栗子:marx_tuple=('Grui','Direhu','Hhed')  a,b,c=marx_tuple    a-->'Grui'  b-->'Direhu'  c-->'Hhed'

可以借助元组在一条语句中对多个变量的值进行交换,而不需要借助临时变量:

栗子:password='swordfish'    icecream='tfundj'      password,icecream=icecream,password  

tuple()函数可以将其他类型的数据来创建元组:

栗子: marxes=['Groucho', 'Hurry', 'Droc', 'Guum']  tuple(marxes)  -->('Groucho', 'Hurry', 'Droc', 'Guum')


注:本文内容来自《Python语言及其应用》欢迎购买原书阅读

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

推荐阅读更多精彩内容