关于列表:
首先明确两点:列表是可变的,列表是可重复的。
使用[ ] 或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语言及其应用》欢迎购买原书阅读